前几天我在考虑规范化,我突然想到,我想不出什么时候数据库中应该有1:1的关系.
-
Name:SSN
? 我会把它们放在同一张桌子上. -
PersonID:AddressID
? 还是同一张桌子.
我可以想出无数个1:many或many:many(带有适当的中间表)的例子,但从来没有1:1的例子.
我是不是漏掉了什么明显的东西?
前几天我在考虑规范化,我突然想到,我想不出什么时候数据库中应该有1:1的关系.
Name:SSN
? 我会把它们放在同一张桌子上.PersonID:AddressID
? 还是同一张桌子.我可以想出无数个1:many或many:many(带有适当的中间表)的例子,但从来没有1:1的例子.
我是不是漏掉了什么明显的东西?
1:1关系通常表示您出于某种原因对较大的实体进行了分区.通常是因为物理模式中的性能原因,但如果大量数据预计同时是"未知"的(在这种情况下,您有1:0或1:1,但没有更多),那么这种情况也可能发生在逻辑端.
作为逻辑分区的一个例子:您有关于员工的数据,但需要收集更大的数据集,前提是他们 Select 医疗保险.我会将有关医疗保险的人口统计数据保存在一个不同的表中,以便于安全分区,并避免在与保险无关的查询中拖拽这些数据.
物理分区的一个例子是,相同的数据托管在多台服务器上.我可能会将医疗保险人口统计数据保存在另一个州(例如,人力资源办公室所在的州),主数据库可能只能通过链接服务器链接到它...避免将敏感数据复制到其他位置,同时使其可用于(假设这里很少)需要它的查询.
如果查询需要更大实体的一致子集,那么物理分区可能会很有用.