gpt4 book ai didi

MySQL PRIMARY KEY 与 UNIQUE 约束

转载 作者:可可西里 更新时间:2023-11-01 08:09:25 26 4
gpt4 key购买 nike

根据 MySQL 文档,PRIMARY KEY 约束和 UNIQUE 约束之间的区别在于 PK 约束不允许 NULL 值,而 UQ 约束允许 NULL 值。在 MySQL 表中,可以为同一列创建 PK 和 UQ!

  • 为已经具有 PK 约束的列创建 UNIQUE 约束的意义或原因是什么!?
  • 为什么 MySQL 允许为已经具有 PK 约束的列创建唯一约束?

最佳答案

作为前言,请注意主键不必是单个列:它可以由多个列组成:这称为复合键。另请注意,并非每个表都有 AUTO_INCREMENT/IDENTITY 列,您可以对复合内的单个列设置 UNIQUE 约束-无论如何都是关键。

  1. 没有 - 但是 DBMS 禁止这样的冗余是没有意义的,因为您需要添加逻辑和复杂性来处理这种情况,而没有真正的冗余同时拥有两者会造成伤害(除了必须维护两个索引的性能影响)。

  2. 如上所述:因为检测和防止冗余的机会成本不值得。

另一件需要考虑的事情是表的主键定义不是不可变的,因此可能会发生变化。一个表可能已经有带有 UNIQUE 约束设置的列,然后数据库设计者决定将其包含在主键的新定义中——要求首先删除旧约束,特别是如果他们的应用程序系统的其他部分依赖于存在的 UNIQUE 约束(例如 1:0..1 关系定义)。

(此外,AUTO_INCREMENTUNIQUEPRIMARY KEY 不相互包含:您可以使用 AUTO_INCREMENT具有非唯一列(例如,如果在表已经包含数据之后添加 AUTO_INCREMENT),相反,PRIMARY KEY 可以使用来自其他地方的唯一值,例如另一个身份列作为外键(复合主键可以包含外键!)或“自然”数据源,例如使用美国社会保险号作为主键(当然你应该永远这样做实际上))。

关于MySQL PRIMARY KEY 与 UNIQUE 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47493487/

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