2017-01-09 7 views
1

これは簡単なことですが、私は自分自身を助けるための例が見つからないという問題があります。 The PID is the primary key for PersonERモデルをリレーショナルモデルにマッピングして主キーを2回使用

私のERモデルでは、「人」は、「befriended_with」というノードを介して別の「人」と仲良くすることができます。私はテーブルがその人のためにどのように見えるか想像することができますが、私は "befriended_with"テーブルに問題があります。この場合、主キーPIDが挿入され、2人の人を一緒に接続するために、PIDで再び仮定されなければならない。

Person 

PID | Name 
---- | ----- 
01 | X 
02 | Y 

befriended_with 

PID | PID 
---- | ----- 
01 | 02 

しかし、私はこれがこのように動作することは想像できません。これは通常どのように実装されていますか?

答えて

1

列の名前は関係ありません。これらの列の値が同じソート/種類/タイプのものを識別する場合、2つの異なる表で同じ名前を使用するニーモニックとしては便利です。 (特にNATURAL JOINまたはUSINGで照会する場合)。ただし、同じ表の列に異なる名前を付けます。 (SQLクエリ結果に重複名が許可されていますが。)

--PID identifies a person named NAME 
Person(pid, name) 
-- person PID has befriended FID 
-- FK pid REFERENCES Person (pid) 
-- FK fid REFERENCES Person (pid) 
Befriended_with(pid, fid) 

列リストの値が別の列リストの値として表示されなければならないときに我々はFK(外部キー)を宣言します。 ERダイアグラムの関係/関連ダイヤモンドからの参加ラインは、FKの列に対応する。

関連する問題