前几天我在想规范化,我突然想到,我想不出数据库中应该存在 1:1 关系的时间。
Name:SSN
PersonID:AddressID
我可以想出无数个 1:many 或 many:many 的例子(带有适当的中间表),但绝不是 1:1。
我错过了一些明显的东西吗?
1:1 关系通常表明您出于某种原因对较大的实体进行了分区。通常是因为物理模式中的性能原因,但如果预计大量数据同时“未知”(在这种情况下您有 1:0或 1:1,但仅此而已)。
作为逻辑分区的一个示例:您有关于员工的数据,但是当且仅当他们选择有健康保险时,需要收集更多的数据。我会将有关健康保险的人口统计数据保存在不同的表中,以便更轻松地进行安全分区,并避免在与保险无关的查询中拖拽这些数据。
物理分区的一个示例是托管在多个服务器上的相同数据。我可能会将健康保险人口统计数据保存在另一个州(例如,人力资源办公室所在的地方),并且主数据库可能只能通过链接服务器链接到它......避免将敏感数据复制到其他位置,但使其可用于(假设这里很少)需要它的查询。
每当 您的查询需要较大实体的一致子集时,物理分区就很有用。