2017-05-06 5 views
0

データベースの作成に問題があります。私の架空の問題は、バレーボールのゲームを追跡するためのデータベースを作成することです。それはプレーヤー(彼らがプレイするチーム、1人のプレーヤーは1つのチームでしか遊ぶことができません)、そしてゲームをプレイしました(各ゲームには各チームに6人のプレーヤーが含まれています)。複数テーブルでの外部キーの使用

私は、次の表を作成したい:

  • プレーヤー(同上P、名、姓、TEAM_NAME F)。
  • チーム(チーム名P、コーチ);
  • ゲーム(日付、チーム1F、チーム2F、プレーヤー1_Team1F、...プレーヤー2_Team2F、プレーヤー1_Team2F、...、プレーヤー2_Team2F)。

チーム1とチーム2がチームテーブルの外部キー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

すべての外部キーを1つずつ追加する必要があります。

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)は実際に複数の同じ列で外部キーが少なくても1つだけの外部キーを作成したかったので、私はうまくいきませんでした。 – vanHohenheim

関連する問題