【发布时间】:2012-01-05 12:36:16
【问题描述】:
Google 主要回答关于PRIMARY KEY/UNIQUE KEY 差异的问题。但是 MySQL 中的 KEY/UNIQUE KEY 呢? MySQL中的KEY不能唯一标识一个元组吗?
【问题讨论】:
Google 主要回答关于PRIMARY KEY/UNIQUE KEY 差异的问题。但是 MySQL 中的 KEY/UNIQUE KEY 呢? MySQL中的KEY不能唯一标识一个元组吗?
【问题讨论】:
不,KEY 是 INDEX 的别名。 INDEX 不必是唯一的。如果KEY(INDEX) 唯一标识了一个元组(一行),那么它就是一个UNIQUE KEY(或一个PRIMARY KEY,具体取决于您如何定义该键)。
【讨论】:
一点也不——带有键的列很容易有重复的值,键有助于快速访问它们。唯一键不允许在该列中插入具有已存在值的行。
【讨论】:
在数据库理论中,“键”是唯一约束的同义词。一些数据库管理系统使用索引(物理)来实现唯一约束(逻辑),被称为“唯一索引”。
对于 mySQL 产品,KEY 是非唯一索引的同义词,我认为这种用法是违反直觉的。
【讨论】:
key 是唯一约束的同义词?我还没有读过key == 唯一约束的任何地方。
我知道这是一个旧线程,但 @onedaywhen 在这里是正确的。在数据库理论中,术语“键”是指候选键或超级键,候选键是最小的超级键。如果有多个主键,则选择主键作为候选键之一,因此“键”是唯一的。如有必要,我可以参考我在大学使用的 DB 书籍。
【讨论】: