racing_couple
ID (PRIMARY)
breeding_couple
ID (PRIMARY)
Egg
IDpar(FOREIGN KEY)
2つの異なるテーブル(racing_coupleとbreeding_couple)からの2つのIDがあり、それらは主キーです。 3.テーブル(卵)には、外部キーであるIDparがあり、racing_coupleとbreeding_coupleのIDを参照しています。表は鳩の競争と繁殖のカップルを表し、表「卵」は競争または繁殖のカップルの卵を表します。また、IDparを使用して、どの卵がどのカップルに属しているかを識別しています。
注両方のデータベースに他のフィールドがありますが、それらは主にvarcharであり、この問題にはそれほど関係ありません。
両方のデータベースにこのようなものがある場合。どのIDparがracing_coupleの値を持ち、どのIDparがbreeding_coupleの値を持っているかを知る方法。私のデータベースをこのようにして間違えたと思いますが、それを機能させる方法はありますか?
ID(racing_couple)
1
2
ID(breeding_couple)
1
2
IDpar(Egg)
1 (ID racing_couple)
1 (ID breeding_couple)
2 (ID racing_couple)
2 (ID breeding_couple)
各カップリングのプロパティが十分に類似している場合は、2つではなく1つの「カップル」テーブルが必要か、または次のように、2つの既存のタイプのカップルが「継承」するカップルテーブルを使用することをお勧めします。
RC Couple Egg
---------- --------------------------- ----------------
C ID (FK) -----> C ID (PK) <----- C ID (FK)
(rc props) | (generic couple properties) (Egg properties)
|
BC |
---------- |
C ID (FK) --'
(BC props)
あなたはまだこの配置でどんな繁殖とレースの詳細も持っていることができますが(もちろん実際には大丈夫かもしれません)、各卵は1つのカップルにのみ関連付けることができます。この方法でモデル化した場合、カップルのIDの範囲は1つしかなく、カップルに関連するデータを含む他のすべてのテーブルには、レコードにリンクできるFKが1つしかないため、ID範囲が重複しても問題は発生しません。
はい。間違い。
この設計作業を行う1つの方法は、ID範囲が重複しないようにすることです。たとえば、レーシングカップルIDを10000から開始します(もちろん、繁殖カップルIDでその近くに決して到達しないと仮定します)。
または、使用する結合テーブルを示すフラグをEgg
テーブルに追加できますか?