在关系模式中映射一个一对一的关系

3
如果有两个实体,它们之间的关系是1:1。同时它们的参与度都是完全的...在关系模式中如何表示它们之间的关系?

如果概念上是一对一的关系,而不是零到一对零到一的关系,那么为了提高效率,将它们放在同一个表中。 - Jim Garrison
2个回答

4
如果两个实体之间的1:1关系并且都存在总参与性,那么你可以将它们合并成为一个关系。主键的选择是任意的(选用原始实体中的一个PK,而另一个PK则成为备用键)。
如果两个实体之间存在其他关系,不允许合并成为一个关系,则可以将这些实体视为父子关系,并且外键的放置位置是任意的。

1
在关系模型中,这被称为“连接依赖”,可以简单地表示为两个关系之间的约束条件,使得P(A) = P(B),其中P(A)和P(B)是关系A和B的投影。虽然在关系术语中很容易支持,但不幸的是,标准SQL不支持在不同表之间强制执行连接依赖关系,因为SQL不支持同时更新多个表的能力。要在SQL中实现,您必须将它们合并为一个表或在更新表时暂时禁用约束条件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接