1

我有一个带有地址实体的关系数据库,该实体应该有一个父地址或一个父单元,但不能同时具有这两者。目前,架构是具有 ParentUnitID 字段和 ParentAddressID 字段的地址。有没有办法改变这一点,防止地址同时具有父地址和父单元,但保留外键约束?

4

1 回答 1

0

FOREIGN KEY 不会对 NULL 值强制执行,因此您只需要确保其中只有一个是非 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 回答