找到自然主键有什么好处

sco*_*ozy 1 database database-design primary-key

我的问题或多或少与问题相反:为什么人们在使用序列作为代理时似乎更容易找到关系中的自然主键.

BradC回答相关问题时提到,选择主键的标准是唯一性,不可简化性,简单性,稳定性和熟悉度.在我看来,使用序列牺牲了最后一个标准,以便为前四个提供最佳解决方案.

如果我认为这些标准是正确的,我可以将我的问题重新表述为:在哪种情况下,人们会认为通过寻找一种同样熟悉的独特,不可简化,简单和稳定的密钥来使一个人的生活复杂化是有利的?

Bil*_*win 5

从查找表中获取有意义的值而不进行不必要的连接.

示例案例: garments引用颜色查找表,该表具有自动增量主键.获取颜色名称需要加入:

SELECT c.color
FROM garments g
JOIN colors c USING (color_id);
Run Code Online (Sandbox Code Playgroud)

更简单的示例:colors.color本身是该表的主键,因此它是引用它的任何表中的外键列.

SELECT g.color
FROM garments g
Run Code Online (Sandbox Code Playgroud)