0

私は 3 つのテーブルを持つデータベース設計を持っています。それらを A、B、C と呼び、次の 1 対多の関係を持ちます。

A-<B>-C

A と B の両方に、主キーとして自動インクリメント ID があります。

私の問題は、たとえば、ID = 12 を含むフィールドを持つテーブル B にレコードがある場合、これがテーブル A または C のどちらの主キーに対応するかを知る方法がないことです。両方のテーブルには、主キー ID=12 があります。これはファントラップの一例だと思いますが、私が行った調査はすべて、次のような関係に関連しています。

A-<B-<C

解決策は、テーブルを再構築することです。これがここで機能するかどうかはわかりません。テーブル B とテーブル A および C の間にテーブルが必要ですか?

4

2 に答える 2

0

私の問題は、たとえば、ID = 12 を含むフィールドを持つテーブル B にレコードがある場合、これがテーブル A または C のどちらの主キーに対応するかを知る方法がないことです。

外部キーが A または C を指しているかどうかを知らせる列を B に追加する必要があります。

もう 1 つの方法は、B に 2 つの null 許容外部キーを持ち、1 つは A を指し、もう 1 つは C を指すことです。

テーブルをもう少し正規化できるのではないかと思うので、次のような構造になっています。

                D
   --------------------------
   |            |           |
   A            B           C
  ---          ---         ---
于 2013-06-06T19:21:03.717 に答える