【发布时间】:2009-07-21 00:27:17
【问题描述】:
阅读this 和this,然后阅读this(讽刺地引用了另外两个),我发现自己想知道这个话题的讨论有多大?我是一名 SQL Server 人员,因此我倾向于使用以 int 形式自动生成的标识。但是,当我知道我需要在服务器和服务器之间进行某种形式的复制或在客户端和服务器之间进行同步时,我倾向于使用 GUID 作为我的密钥。
问题:我是否应该始终使用 GUID 作为所有表的主键,以防万一我可能需要这种可能的可扩展性?这是否使我的架构更加灵活,因为它可以随时在平台之间迁移?通过不嵌入特定于平台的功能,这是否有助于我保持 ORM 的灵活性(无论其风格如何)?
回应:
@David Archer:根据您的评论,我更新了我的帖子,不再说“天然钥匙”。你是正确的,自然键被定义为such。谢谢指正。
【问题讨论】:
-
只是一点点,你的术语似乎有点不对劲。 “自然键”通常基于您所描述的类型记录的特定内容,并且被认为是唯一且不变的。想想用于存储美国公民列表的社会安全号码或用于用户列表的电子邮件地址。您正在寻找的术语是代理键,它同样适用于自动生成的整数和 GUID。
标签: orm primary-key database-agnostic design-decisions