2017-05-06 53 views
0

我在创建数据库时遇到问题。我的虚构问题是创建用于跟踪排球比赛的数据库。它应该包含有关玩家的信息(他们参加比赛的球队,一名球员只能在一个球队中进行比赛),以及玩过比赛(每场比赛中每名球员包含6名球员)。对多个表使用外键

我想创建下表:

  • 播放器(编号P,姓名,TEAM_NAME F);
  • Team(Team_Name P,Coach);
  • 游戏(日期,Team1 F,Team2 F,Player1_Team1 F,... Player2_Team2 F,Player1_Team2 F,...,Player2_Team2 F)。

我希望Team1和Team2是来自Team表的外键Team_Name。这是我的尝试,我得到的是外键错误地形成。我会很高兴的帮助。

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

请编辑您的问题,以增加针对SQL的形式,您使用的标签,即'MySQL','SQL-Server'等 – toonice

回答

0

您应该逐个添加所有外键。

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

谢谢你,让我的一天!知道它就像一个魅力。为了更好地理解它,我没有工作,因为Foreign Key(Player1,... Player6)实际上只想创建一个具有多个相同列且不少外键的外键? – vanHohenheim