ではtable A
3 つのフィールドの複合体がありprimary key
、table B
では複合体の 1 つ (一意ではありません) があります。( で)table A
を緩和するために で参照したいと思います。delete
ON DELETE CASCADE
それで、他の2つのフィールドをテーブルBに入れてこれを参照する必要がありますか、composite
それとも別の解決策がありますか?
ではtable A
3 つのフィールドの複合体がありprimary key
、table B
では複合体の 1 つ (一意ではありません) があります。( で)table A
を緩和するために で参照したいと思います。delete
ON DELETE CASCADE
それで、他の2つのフィールドをテーブルBに入れてこれを参照する必要がありますか、composite
それとも別の解決策がありますか?
2 つのテーブル間に外部キー制約を作成する場合、親テーブルの主キー制約を構成するすべての列を子テーブルに含める必要があります (これが、コンポジット プライマリの使用をお勧めしない理由の 1 つです)。キー)。親行が削除されたときに子行を自動的に削除する場合は、ON DELETE CASCADE
. だからあなたのオプションは
テーブル A に新しい単一列 (おそらくシーケンス生成) の主キーを作成し、既存の複合キーを主キーではなく一意のキーにすることができます。次に、テーブル B から新しい主キーを参照します。