2017-12-16 13 views
1

私は小さなデータベースを設計しており、2つのテーブルに問題があります。私はteamとregisteredAccountテーブルを持っています。登録されたアカウントは、0または1つのチームを持つことができます。チームには、登録されたアカウントであるチームマネージャーがいます。データベース設計:両方の外部キーで2つのテーブルをリンクする

私は、registeredAccountIdをチームテーブルにリンクするのに苦労しています。チームテーブルに外部キーを追加できないというSQLエラーが発生します。

誰かがこれをよりうまく設計する方法について提案があれば、それは素晴らしいことです。それがnullで、チームはチームマネージャーを持っているチーム
とは独立していることができますので、登録したアカウントに、外部キーを設定する必要はあり

CREATE TABLE team(

    teamId  INT PRIMARY KEY, 
    teamName   VARCHAR(20), 
    teamManagerId INT, 
    CONSTRAINT team_fk_registeredAccount 
     FOREIGN KEY (teamManagerId) 
     REFERENCES registeredAccount(registeredAccountId) 
); 

CREATE TABLE registeredAccount(

    registeredAccountId INT PRIMARY KEY, 
    displayName  VARCHAR(20), 
    subscribed  BOOLEAN, 
    teamId  INT, 
    CONSTRAINT registeredAccount_fk_team 
    FOREIGN KEY (teamId) 
     REFERENCES team(teamId) 
); 

答えて

1

ではありません。ここで

は私のテーブルです。それはあなたが関係を設定する場所です。

CREATE TABLE team(

    teamId  INT PRIMARY KEY, 
    teamName   VARCHAR(20), 
    teamManagerId INT, 
    CONSTRAINT team_fk_registeredAccount 
     FOREIGN KEY (teamManagerId) 
     REFERENCES registeredAccount(registeredAccountId) 
); 

CREATE TABLE registeredAccount(

    registeredAccountId INT PRIMARY KEY, 
    displayName  VARCHAR(20), 
    subscribed  BOOLEAN, 
    teamId  INT, 
    CONSTRAINT registeredAccount_fk_team 
     FOREIGN KEY (teamId) 
     REFERENCES team(teamId) 
); 
+1

「registeredAccount」には「teamId'属性がありません。それ以外の場合は、チーム**メンバー**とチーム**のメンバーとのリンクはありません。完全に正規化したい場合は、 'registeredAccountId(pk、fk)、teamID(fk)'という3番目の関係を作成します。 – cowbert

関連する問題