gpt4 book ai didi

mysql - 为什么不允许在一个表中使用两个主键?

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

我想了解 MySql 语法不允许在同一个表中使用两个主键的原因。我了解复合键,这与此无关。

我不明白为什么不允许在同一个表中使用两个单独的主键。但是我们可以将一列作为主键,将另一列作为唯一且不为空。这实际上相当于有两个不同的主键,因为我们可以使用这些键中的任何一个来清楚地标识一行。为什么第一个不可以,第二个可以?

我试图找出其中的逻辑,但偶然发现了 Codd 的 12 条规则中的规则 2

Each and every datum (atomic value) in a relational data base is guaranteed to be logically accessible by resorting to a combination of table name, primary key value and column name.

表名、主键值和列的组合对于单个数据值应该是唯一的还是我们可以有多个组合来保证访问?为什么或者为什么不?

编辑:由于问题被确定为可能重复,我将在下面解释它有何不同其他类似的问题是

Can I have multiple primary keys in a single table?

答案是

我的问题是为什么原因是什么?

Codd 打算根据规则 2 说什么?

如果允许多个单独的主键会出现什么问题?

最佳答案

在数据库系统允许的情况下,您可以拥有尽可能多的 UNIQUE KEY 约束,许多关系纯粹主义者现在认为提升这些键中的 一个 并将其指定为 PRIMARY 是错误的。

从逻辑上讲,唯一键约束和主键都实现相同的目的 - 定义可以唯一标识行的列子集。它们也应该有资格作为外键约束的目标。

某些默认值(例如可空性)由主键约束自动应用,但您没有理由不能将相同的约束手动应用到唯一键约束中包含的列。

关于mysql - 为什么不允许在一个表中使用两个主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112095/

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