3

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

4

2 回答 2

6

识别最小键很重要的原因是确保对这些键的依赖没有冗余。冗余可能导致异常和不正确的结果。

最小化本质上是一种语义问题,而不是纯粹的结构特征,因此数据库实现不一定需要它。例如,SQL 允许您在任何超键上创建“主键”,这可能不是不可约的超键。

最小与存储大小无关,因为最小意味着不可约,它并不意味着最小。

于 2010-08-16T10:16:54.773 回答
1

主键应该是最小的,因为它们只需要大到足以唯一标识行。就所使用的索引空间而言,其他任何东西都是浪费。

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

于 2010-08-16T07:03:20.183 回答