我用谷歌搜索了很多,但我没有找到一个例子的确切直接答案。
任何这方面的例子都会更有帮助。
最佳答案
主键是您选择的表中的唯一键,可以最好地唯一标识表中的记录。所有表都应该有一个主键,因为如果您需要更新或删除记录,您需要知道如何唯一标识它。
代理键是人工生成的键。当您的记录基本上没有自然键时,它们很有用(例如 Person
表,因为同一天出生的两个人可能具有相同的名字,或者日志中的记录,因为可能发生两个事件因此它们带有相同的时间戳)。大多数情况下,您会看到这些实现为自动递增字段中的整数,或为每个记录自动生成的 GUID。 ID 号几乎总是代理键。
然而,与主键不同的是,并非所有表都需要代理键。如果您有一张列出美国各州的表格,则您实际上并不需要它们的 ID 号。您可以使用州缩写作为主键代码。
代理键的主要优点是它们很容易保证是唯一的。主要的缺点是它们没有任何意义。例如,“28”没有意思是威斯康星州,但是当您在地址表的州列中看到“WI”时,您就知道您在谈论哪个州,而无需查找您所在州的哪个州 table 。
关于sql - 主键和代理键有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36773011/