gpt4 book ai didi

mysql - mysql规范化数据库中PRIMARY KEY的使用方法

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

多对多关系的一般形式是创建三个包含两列的表(例如关联成员最喜欢的电影)。两个表是电影和成员的列表。在这两个表中,我们分配了一个auto_increment ID(这是主键)。然后将这两个ID的关系存储在第三个表中。

我想知道为什么我们为这两列使用ID?我们可以有两个单列表作为电影和人物的列表;然后创建将电影与人相关的关系表:

Fred   Gladiator
Brian Godfather
Fred Godfather

这种方法唯一的缺点是搜索纯整数表更容易找到关系。相反,我们减少了两个索引列。

有什么想法吗?

最佳答案

I wonder why we use ID for these two columns?

我认为通常是cargo cult programming .

  • 如果没有任意的、无意义的 ID 号就无法区分 Fred,那么使用任意的、无意义的 ID 号也无法区分 Fred。
  • 如果您预计其中一个名称会发生​​变化,那么您应该级联更新。 (许多 Oracle 开发人员坚持键必须是不可变的。这并不是因为可变的自然键“不好”;这是因为 Oracle 不支持 ON UPDATE CASCADE。)
  • 有一种普遍但不正确的观点认为 ID 号只是“更快”,这可能是因为 dbms 引擎“针对 ID 号的联接进行了优化”。连接中的 ID 号是否更快取决于表的宽度、自然键的内容、行数、所需的连接数、页面大小和查询的性质。经常被忽视的是,使用自然键通常会减少连接数。有时,自然键会消除所有 连接,即使在 5NF 中的表中也是如此。

参见 this recent SO answer进行一些测量。

别猜了。测量。

关于mysql - mysql规范化数据库中PRIMARY KEY的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7883727/

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