主键是唯一标识表中行的一个属性或一组属性。但是主键不仅必须是唯一的,而且必须是最小的。为什么这是必要的?
问问题
4765 次
2 回答
6
识别最小键很重要的原因是确保对这些键的依赖没有冗余。冗余可能导致异常和不正确的结果。
最小化本质上是一种语义问题,而不是纯粹的结构特征,因此数据库实现不一定需要它。例如,SQL 允许您在任何超键上创建“主键”,这可能不是不可约的超键。
最小与存储大小无关,因为最小意味着不可约,它并不意味着最小。
于 2010-08-16T10:16:54.773 回答
1
主键应该是最小的,因为它们只需要大到足以唯一标识行。就所使用的索引空间而言,其他任何东西都是浪费。
换句话说,如果我有一个唯一列username
和另一个唯一列student_id
,那么从这两者构建的主键是一种浪费。处理这个问题的正常方法是使用一个作为主键,然后在另一个上有一个唯一的约束/索引。
于 2010-08-16T07:03:20.183 回答