gpt4 book ai didi

database - native 主键还是自动生成的?

转载 作者:太空狗 更新时间:2023-10-30 01:50:12 25 4
gpt4 key购买 nike

通常,使用 native 主键(即现有列或列组合)还是将主键设置为自动生成的整数行更好?

编辑:
有人向我指出,这与 this question 非常相似。 .

这里的共识是使用代理键,这是我的自然倾向,但我的老板告诉我,我也应该尽可能使用自然键。他的建议可能最适合这个特定的应用程序,因为 Name in row 唯一标识它并且我们需要保持查看旧数据的能力,因此对名称/规则的任何更改都将意味着新的唯一行。

虽然这里的答案都是有帮助的,但大多数都是基于主观的“这是你应该做的”,并且没有引用支持性来源。我是否遗漏了一些必要的阅读 Material ,或者数据库设计的最佳实践是否高度主观和/或依赖于应用程序?

最佳答案

主键

  1. 必须唯一标识一行。
  2. 不能包含数据,否则当你的数据改变时它也会改变(这是不好的)
  3. 比较操作(WHERE 子句/连接)应该很快

理想情况下,您为行使用人工(代理)键,数字整数数据类型 (INT) 最好,因为节省空间且速度快。

主键应由仍满足条件 1.-3 的最少字段数组成。对于绝大多数表格,此最小值是:1 个字段。

对于关系表(或非常特殊的边缘情况),它可能更高。引用具有复合主键的表很麻烦,因此对于必须单独引用的表,不建议使用复合键。

在关系表(m:n 关系)中,您从相关表的主键中创建一个复合键,因此您的复合键会自动满足上述所有三个条件。

如果您绝对确定数据是唯一的并且永远不会改变,则您可以从数据中创建主键。由于这很难保证,我建议不要这样做。

关于database - native 主键还是自动生成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/532363/

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