親 Address または親 Unit を持つ必要がある Address エンティティを持つリレーショナル データベースがありますが、両方は必要ありません。現在、スキーマは、ParentUnitID フィールドと ParentAddressID フィールドを持つ Address です。Address が親 Address と親 Unit の両方を同時に持つことを防ぎ、外部キー制約を保持するように変更する方法はありますか?
質問する
81 次
1 に答える
0
FOREIGN KEY は NULL 値には適用されないため、そのうちの 1 つだけが非 NULL であることを確認する必要があります。
CHECK (
(ParentUnitID IS NOT NULL AND ParentAddressID IS NULL)
OR (ParentUnitID IS NULL AND ParentAddressID IS NOT NULL)
)
MySQL を使用する場合は、これをトリガーとして実装する必要があります。MySQLは CHECK 制約を適用しないためです。
または、こちらで説明されているように、継承を使用することもできます。
于 2013-10-10T09:56:05.050 に答える