是否将外键设置为父表费用的代理?
因为我必须加入那个父/引用表来显示自然键。
但是为什么最好将外键设置为引用表的surrgate。
答案 0 :(得分:1)
从某种意义上来说,在某些情况下,使用自然键(如您已经注意到的那样)不需要JOIN是很昂贵的。此外,自然键通常在clustering时效果更好,有时correctly modelling diamond-shaped dependencies也是必需的。
另一方面,使用“skinnier”代理键可以节省一些空间并简化更新(特别是当有多个级别的FK时)。
这两种方法都不是“更好” - 这是妥协的问题。