![]() |
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 |
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] |
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. |
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 |
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 |
Sein Problem ist wohl, dass sein Programm zur Datenbankmodelierung dies nicht darstellen/erstellen kann.
|
Zitat:
|
Zitat:
So ist die Dokumentation des Datenbankmodells um einiges einfacher und das Einarbeiten von Fremdresourcen gestaltet sich um einiges effizienter. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag