主键是唯一标识表中行的属性或属性集。但是主键不仅要是唯一的,而且要是最小的。为什么这有必要?
答案 0 :(得分:5)
识别最小密钥很重要的原因是为了确保这些密钥的依赖性没有冗余。冗余会导致异常和不正确的结果。
极简本质上是一个语义问题而不是纯粹的结构特征,因此数据库实现不一定需要它。例如,SQL允许您在任何超级密钥上创建“PRIMARY KEY”,这可能不是不可简化的超级密钥。
极简与存储大小无关,因为最小意味着不可减少,它并不意味着最小。
答案 1 :(得分:1)
主键应该是最小的,因为它们必须足够大才能唯一地标识行。对于使用的索引空间而言,任何其他方面都是浪费。
换句话说,如果我有一个唯一的列username
以及另一个唯一列student_id
,那么从这两个列构建的主键就是一种浪费。处理这种情况的常用方法是使用一个作为主键,然后在另一个上使用唯一约束/索引。