为什么主键必须最小化?

时间:2010-08-16 06:55:35

标签: database primary-key composite-key composite-primary-key

主键是唯一标识表中行的属性或属性集。但是主键不仅要是唯一的,而且要是最小的。为什么这有必要?

2 个答案:

答案 0 :(得分:5)

识别最小密钥很重要的原因是为了确保这些密钥的依赖性没有冗余。冗余会导致异常和不正确的结果。

极简本质上是一个语义问题而不是纯粹的结构特征,因此数据库实现不一定需要它。例如,SQL允许您在任何超级密钥上创建“PRIMARY KEY”,这可能不是不可简化的超级密钥。

极简与存储大小无关,因为最小意味着不可减少,它并不意味着最小。

答案 1 :(得分:1)

主键应该是最小的,因为它们必须足够大才能唯一地标识行。对于使用的索引空间而言,任何其他方面都是浪费。

换句话说,如果我有一个唯一的列username以及另一个唯一列student_id,那么从这两个列构建的主键就是一种浪费。处理这种情况的常用方法是使用一个作为主键,然后在另一个上使用唯一约束/索引。