代理键作为外键

时间:2012-06-05 05:41:01

标签: database database-design

是否将外键设置为父表费用的代理?

因为我必须加入那个父/引用表来显示自然键。

但是为什么最好将外键设置为引用表的surrgate。

1 个答案:

答案 0 :(得分:1)

从某种意义上来说,在某些情况下,使用自然键(如您已经注意到的那样)不需要JOIN是很昂贵的。此外,自然键通常在clustering时效果更好,有时correctly modelling diamond-shaped dependencies也是必需的。

另一方面,使用“skinnier”代理键可以节省一些空间并简化更新(特别是当有多个级别的FK时)。

这两种方法都不是“更好” - 这是妥协的问题。