WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 20.07.2005, 20:41   #1
Juro
Hero
 
Registriert seit: 24.04.2003
Alter: 53
Beiträge: 823


Standard DB Design: Frage

HI,
Ich designe gerade eine kleine Datenbank und komme einfach nicht weiter bei einem Problem.

Abzubilden ist folgende Struktur:

Tabelle 1
player mit folgenden Feldern:
play_id
play_name
play_cname

Tabelle 2
team mit folgenden Feldern:
team_id
team_player1
team_player2

Die Felder team_player1 und team_player2 sind foreign keys, d.h. zwei verschiedene (!) play_ids. Zum designen verwende ich den DBDesigner, nur leider macht der nicht das was ich will. Die Datenbankstruktur habe ich beigefügt.

Leider erstellt der DBDesigner nur einen foreign key, aber ich brauche ja zwei und zwar für jeden Spieler einen.

Irgendwelche Ideen?

lg
juro
____________________________________
Software is like sex, it\'s better when it\'s free!
Juro ist offline   Mit Zitat antworten
Alt 21.07.2005, 10:17   #2
hewlett
Inventar
 
Registriert seit: 08.11.2000
Alter: 42
Beiträge: 1.524


Standard

und wo ist da dann das problem?

ich würds sowieso anders machen:

Eine dritte Tabelle (TeamPlayer oder so) in der die play_id und team_id gespeichert ist, und im der team table team_player1 und team_player2 rausnehmen, so kannst du dann beliebig viele Spieler einem Team zuordnen.

Code:
[player]
play_id | name | cname
1          x      y
2          c      d
3          d      e
4          r      j
5          s      a

[team]
team_id | name
1         abc
2         efg
3         hij

[teamplayer]
id | team_id_fk | play_id_fk
1        1            1
2        1            2
3        1            3
4        1            5
5        2            4
So würd ichs machen!
____________________________________
H.E.W.L.E.T.T.: Hydraulic Electronic Worker Limited to Exploration and Terran Troubleshooting
hewlett ist offline   Mit Zitat antworten
Alt 21.07.2005, 14:05   #3
Juro
Hero
 
Registriert seit: 24.04.2003
Alter: 53
Beiträge: 823


Standard

Danke für Deinen Vorschlag, es ist aber nicht Sinn und Zweck. Es darf nur zwei Spieler pro Mannschaft geben.

Das große Problem ist, daß die sql CREATE-scripts so ausschauen:

CREATE TABLE player (
player_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
player_name TEXT NULL,
PRIMARY KEY(player_id)
);

CREATE TABLE team (
team_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
player_id INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(team_id, player_id),
INDEX team_FKIndex1(player_id),
INDEX team_FKIndex2(player_id)
);

und da fehlt offensichtlich die 2. player_id in der team Tabelle.
____________________________________
Software is like sex, it\'s better when it\'s free!
Juro ist offline   Mit Zitat antworten
Alt 21.07.2005, 14:46   #4
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Alles nur soweit ich weiß:

Du kannst rein SQL technisch keine Verknüpfung von einer Tabelle zu zwei verschienden Zeilen der gleichen Tabelle mache, das funktioniert rein logisch nicht.

Du bräuchtest hier theoretisch eine "virtuelle Tabelle", die eigentlich eine Kopie der Player Tabelle ist - dann könntest du schön einfach deine Beziehungen ziehen. Ist nur nicht ganz sinnvoll.

Wenn du nun keine Zwischentabelle haben willst (die ich verwenden würd, auch wenn ein Team nur zwei Spieler hat), so musst du wohl auf eine der beiden Relationen zwischen Team und Spieler verzichten.

Zusätzlich wird es noch auf den SQL-Dialekt ankommen ob das irgendwie anders realisierbar wäre.

Alles nur meine Erfahrungen, kann sein, dass das in anderen SQL-Dialekten auch funktioniert - aber anscheinend mag dein DB-Desinger das ganze genau so wenig wie ich.

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 21.07.2005, 19:23   #5
snowman
Inventar
 
Registriert seit: 26.09.1999
Beiträge: 2.569


Standard

Kann ein Spieler Mitglied in mehreren Teams sein? Wenn nicht, ist es ein klassisches 1:n Entitiy-Modell. (eigentlich ja nur 1:2)

player tabelle wie gehabt.

tabelle team:
team_id
player1
player2


player1 und player2 sind die play_id von der player-Tabelle.
Oder verstehe ich irgendetwas nicht?

gruss,
snowman
____________________________________
MediaMarkt? Ich bin doch nicht blöd, Mann!

Vorsprung durch Technik

Lesen Sie keine Anleitungen, FAQs, Readme - Files. Reine Zeitverschwendung. In den Newsgroups und Foren gibt es genug kompetente Leute, die mit großer Geduld immer wieder dieselben einfachen Fragen beantworten. Völlig kostenlos noch dazu!
snowman ist offline   Mit Zitat antworten
Alt 21.07.2005, 21:35   #6
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Sein Problem ist wohl, dass sein Programm zur Datenbankmodelierung dies nicht darstellen/erstellen kann.
T.dot ist offline   Mit Zitat antworten
Alt 22.07.2005, 12:31   #7
hewlett
Inventar
 
Registriert seit: 08.11.2000
Alter: 42
Beiträge: 1.524


Standard

Zitat:
Original geschrieben von T.dot
Sein Problem ist wohl, dass sein Programm zur Datenbankmodelierung dies nicht darstellen/erstellen kann.
Ich frag mich ja überhaupt warum ich für so ein triviales Problem überhaupt ein Programm zur Datenmodellierung brauche?
____________________________________
H.E.W.L.E.T.T.: Hydraulic Electronic Worker Limited to Exploration and Terran Troubleshooting
hewlett ist offline   Mit Zitat antworten
Alt 22.07.2005, 20:54   #8
Juro
Hero
 
Registriert seit: 24.04.2003
Alter: 53
Beiträge: 823


Standard

Zitat:
Original geschrieben von hewlett
Ich frag mich ja überhaupt warum ich für so ein triviales Problem überhaupt ein Programm zur Datenmodellierung brauche?
Gar nicht, ist das Problem aber nur ein teilproblem, weil die Aufgabenstellung an der Datenbank komplexer ist, ist es immer besser von vornhinein ordentlich zu planen und dazu auch Tools einzusetzen. Gerade dbDesigner ist hier interessant, da es reverse engineering beherrscht und man mögliche Änderungen im ERD durchaus auch automatisch in der DB vornehmen lassen kann.

So ist die Dokumentation des Datenbankmodells um einiges einfacher und das Einarbeiten von Fremdresourcen gestaltet sich um einiges effizienter.
____________________________________
Software is like sex, it\'s better when it\'s free!
Juro ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:39 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag