您指出,可以通过使用 自然键 而不是代理键 来避免一些联接查询。只有您可以评估这样做的好处在您的应用程序中是否很重要。
也就是说,您可以测量应用程序中最重要的查询,因为它们要处理大量数据或执行得非常频繁,因此它们对于提高查询速度至关重要。如果这些查询从消除联接中受益,并且不因使用varchar主键而受苦,则可以这样做。
不要对数据库中的所有表都使用这两种策略。在某些情况下,自然键可能会更好,但在其他情况下,替代键会更好。
其他人指出,在实践中,很少有自然密钥永远不会更改或具有重复项,因此代理密钥通常是值得的。