gpt4 book ai didi

database - 好的数据库设计在表中没有标识列,对吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:23 26 4
gpt4 key购买 nike

在数据库的每个表中增加一个标识列有什么好处?有什么缺点?

更新:现在我想扩展案例并引入复制。除了我们通过复制获得的 rowguid 之外,这个代理键(身份 comlumn)的作用是什么。代表 K. Brian Kelley 的反对意见应该在此 rowguid 上设置聚簇索引(忘记标识列)。你怎么看?

最佳答案

简短版本:代理键或合成键(您可能指的是“身份列”)与自然键是一个非常古老的争论。

代理键的优点:

  • 让您独立于自然键的变化(思考新需求/变化的领域模型),否则这些变化会在您的数据模型中级联
  • 有时, 没有自然键(例如地址簿中的人)
  • 通常更快,因为它更短(单个 int 列,而不是例如几个 varchars)
  • 在联接等方面更方便,因为它只有一个列

缺点:

  • 您仍然需要为每个候选自然键创建一个唯一索引(因此还需要一个索引)
  • 它与域无关,可能需要额外的连接才能获取真实数据

一般来说,代理键通常是一个好主意,除了在像连接表这样的简单情况下。

有关所有详细信息,请参阅 Wikipedia ,其中有一篇关于该主题的好文章。

关于database - 好的数据库设计在表中没有标识列,对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1647136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com