【发布时间】:2015-09-13 17:05:52
【问题描述】:
我正在从 UML 图创建一个数据库。我试图编写一个我从未遇到过的案例,它是(可选的)一对(可选的)一对一关系。
我有两个表,我们称它们为 A 和 B。A 可以通过 0..1 关系引用 B。问题是 B 最多应该被一个 A 对象引用。
我不确定我应该如何处理这个问题。我应该在 B 中引用 A 并在 a 中引用 B 吗?我应该只在 A 中添加对 B 的引用(并在触发器或代码中强制进行其他检查)吗?
如果有帮助,这些链接将不会经常创建,并且只会一一创建,因此如果在代码或触发器中进行检查,则不会出现性能问题。但我宁愿通过数据库设计来禁止不良数据,而不仅仅是通过代码。
【问题讨论】:
-
外键的唯一约束?
-
B 的引用似乎应该在 A 中。这样您就可以限制对 B 的 ID 有多个引用的行。
-
@PM77-1 不错且简单的解决方案。我不敢相信我没有想到这个。你应该把它作为一个答案。
-
我认为 UNIQUE 约束将只允许一行具有 NULL 值。这符合您对 0..1 关系的要求吗?
-
看来,unlike MySQL、SQL Server 确实不允许在一个 UNIQUE 列中允许多个 NULL 值。
标签: sql sql-server database-design