2017-05-06 4 views
0

Ich habe ein Problem mit dem Erstellen einer Datenbank. Mein fiktives Problem besteht darin, eine Datenbank für das Verfolgen von Volleyballspielen zu erstellen. Es sollte Informationen über Spieler (Team, in dem sie spielen, ein Spieler kann nur in einem Team spielen) und Spiele (jedes Spiel enthält 6 Spieler in jedem Team) enthalten.Verwendung von Fremdschlüsseln mit mehreren Tabellen

Ich wollte folgenden Tabellen erstellen:

  • Player (Id P, Name, Vorname, TEAM_NAME F);
  • Team (Team_Name P, Coach);
  • Spiel (Datum, Team1 F, Team2 F, Spieler1_Team1 F, ... Spieler2_Team2 F, Spieler1_Team2 F, ..., Spieler2_Team2 F).

Ich wollte, dass Team1 und Team2 Fremdschlüssel Team_Name aus der Team-Tabelle sind. Hier ist mein Versuch, ich bekomme diesen Fremdschlüssel falsch gebildet. Ich werde sehr froh um Hilfe sein.

CREATE TABLE Team (
    Team_Name varchar(20) NOT NULL, 
    Coach varchar(20) NOT NULL, 
    CONSTRAINT Team_pk PRIMARY KEY (Team_Name) 
); 


CREATE TABLE Game (
    id int NOT NULL, 
    Data date NOT NULL, 
    Team1 varchar(20) NOT NULL, 
    Team2 varchar(20) NOT NULL, 
    Score int , 
    D1_Player1 int NOT NULL, 
    D1_Player2 int NOT NULL, 
    D1_Player3 int NOT NULL, 
    D1_Player4 int NOT NULL, 
    D1_Player5 int NOT NULL, 
    D1_Player6 int NOT NULL, 
    D2_Player1 int NOT NULL, 
    D2_Player2 int NOT NULL, 
    D2_Player3 int NOT NULL, 
    D2_Player4 int NOT NULL, 
    D2_Player5 int NOT NULL, 
    D2_Player6 int NOT NULL, 
    CONSTRAINT Game_pk PRIMARY KEY (id) 
); 

CREATE TABLE Player (
    Id int NOT NULL, 
    Name varchar(30) NOT NULL, 
    Surname varchar(30) NOT NULL, 
    Team_Name varchar(20) NOT NULL, 
    CONSTRAINT Player_pk PRIMARY KEY (id) 
); 


ALTER TABLE Player ADD CONSTRAINT DZ 
    FOREIGN KEY (Team_Name) 
    REFERENCES Team (Team_Name) 
; 


ALTER TABLE Game ADD CONSTRAINT MD 
    FOREIGN KEY (Team1, Team2) 
    REFERENCES Team (Team_Name, Team_Name) 
; 


ALTER TABLE Mecz ADD CONSTRAINT MZ 
    FOREIGN KEY (D1_Player1, D1_Player2, D1_Player3, D1_Player4, D1_zPlayer5, D1_Player6, D2_Player1, D2_Player2, D2_Player3, D2_Player4, D2_Player5, D2_Player6) 
    REFERENCES Player (id, id, id, id, id, id, id, id, id, id, id, id) 
; 
+1

Sie bitte Ihre Frage bearbeiten, um einen Tag hinzuzufügen, für die Form von SQL Sie verwenden, dh 'MySQL',' SQL-Server' usw. – toonice

Antwort

0

Sie sollten alle Fremdschlüssel nacheinander hinzufügen.

ALTER TABLE Game ADD CONSTRAINT MZ 
    FOREIGN KEY (D1_Player1) 
    REFERENCES Player (id) 
; 

ALTER TABLE Game ADD CONSTRAINT MZ2 
    FOREIGN KEY (D1_Player2) 
    REFERENCES Player (id) 
; 

ALTER TABLE Game ADD CONSTRAINT MZ3 
    FOREIGN KEY (D1_Player3) 
    REFERENCES Player (id) 
; 

GO 

dbfiddle here

+0

danke du hast meinen Tag gemacht! Kenne es wie ein Zauber. Um es besser zu verstehen, funktionierte das nicht, weil Foreign Key (Player1, ... Player6) tatsächlich nur einen Fremdschlüssel mit mehreren gleichen Spalten und nicht wenigen Fremdschlüsseln erstellen wollte? – vanHohenheim

Verwandte Themen