1

親 Address または親 Unit を持つ必要がある Address エンティティを持つリレーショナル データベースがありますが、両方は必要ありません。現在、スキーマは、ParentUnitID フィールドと ParentAddressID フィールドを持つ Address です。Address が親 Address と親 Unit の両方を同時に持つことを防ぎ、外部キー制約を保持するように変更する方法はありますか?

4

1 に答える 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 に答える