![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Hero
![]() Registriert seit: 24.04.2003
Alter: 53
Beiträge: 823
|
![]() 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! |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 08.11.2000
Alter: 42
Beiträge: 1.524
|
![]() 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
____________________________________
H.E.W.L.E.T.T.: Hydraulic Electronic Worker Limited to Exploration and Terran Troubleshooting |
![]() |
![]() |
![]() |
#3 |
Hero
![]() Registriert seit: 24.04.2003
Alter: 53
Beiträge: 823
|
![]() 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! |
![]() |
![]() |
![]() |
#4 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() 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 |
![]() |
![]() |
![]() |
#5 |
Inventar
![]() Registriert seit: 26.09.1999
Beiträge: 2.569
|
![]() 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! |
![]() |
![]() |
![]() |
#6 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Sein Problem ist wohl, dass sein Programm zur Datenbankmodelierung dies nicht darstellen/erstellen kann.
|
![]() |
![]() |
![]() |
#7 | |
Inventar
![]() Registriert seit: 08.11.2000
Alter: 42
Beiträge: 1.524
|
![]() Zitat:
____________________________________
H.E.W.L.E.T.T.: Hydraulic Electronic Worker Limited to Exploration and Terran Troubleshooting |
|
![]() |
![]() |
![]() |
#8 | |
Hero
![]() Registriert seit: 24.04.2003
Alter: 53
Beiträge: 823
|
![]() Zitat:
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! |
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|