3

ではtable A3 つのフィールドの複合体がありprimary keytable Bでは複合体の 1 つ (一意ではありません) があります。( で)table Aを緩和するために で参照したいと思います。deleteON DELETE CASCADE

それで、他の2つのフィールドをテーブルBに入れてこれを参照する必要がありますか、compositeそれとも別の解決策がありますか?

4

2 に答える 2

3

2 つのテーブル間に外部キー制約を作成する場合、親テーブルの主キー制約を構成するすべての列を子テーブルに含める必要があります (これが、コンポジット プライマリの使用をお勧めしない理由の 1 つです)。キー)。親行が削除されたときに子行を自動的に削除する場合は、ON DELETE CASCADE. だからあなたのオプションは

  • 親の主キーを構成するすべての列を子に追加します。
  • 単一列の主キー (おそらく合成キー) が存在するように親テーブルを再設計し、それを子テーブルで使用します。
  • 削除を自分で実装するコードを記述します。
于 2012-12-06T21:41:37.487 に答える
1

テーブル A に新しい単一列 (おそらくシーケンス生成) の主キーを作成し、既存の複合キーを主キーではなく一意のキーにすることができます。次に、テーブル B から新しい主キーを参照します。

于 2012-12-06T21:44:17.223 に答える