假设我有一张ORDERS_LINE桌子和一张PRODUCT桌子,ORDERS_LINE桌子上必须包含订购了哪种产品的信息。我更喜欢使用基于名称的主键,因为它在另一个表中更容易阅读,并且减少了重复项目的机会。但这是我的意见,我真的不知道是否有标准,或者一种方法是否比另一种更有效。
像往常一样,这取决于。让我们首先考虑什么是键,它是唯一标识您业务中某些内容的东西。即使您出于某种原因选择使用代理键,您仍然应该识别和实现自然候选键。
理想情况下,密钥具有许多属性
这些属性之间经常存在冲突,必须做出某种妥协。自然键 - 例如你的名字 - 可能不够稳定,因此对于键来说是一个糟糕的选择。另一方面,用户不熟悉代理键。
总而言之,您的问题没有简单的答案,这取决于具体情况。设计您的钥匙,并充分利用它。我不建议盲目地选择一种方法而不是另一种方法。