规范化和主键

Nip*_*mal 1 database database-design relational-database database-normalization

在给定的表中,如果没有主键甚至不可能创建复合主键,那么该表的正常形式是什么?

如果它的零(0NF)添加一个新列并使其成为主键会将这个表转换为 1NF ?

rea*_*anb 5

范式适用于关系,即数学结构。表格可以用来表示关系,但这需要一些规则来确保表格包含的信息不会多于或少于对应关系。

为了让表表示关系:

  • 所有行和列必须是唯一的
  • 他们所处的顺序无关紧要
  • 所有重要信息都必须表示为单元格中的值(即字体、突出显示等,无关紧要)
  • 每个单元格必须包含一个值(无论该值有多简单或多复杂)

此外,关系模型关心候选键,而不是主键。一个关系可以有多个候选键。主键只是被某些学科(例如实体关系模型)或某些数据库管理系统(例如用于物理记录排序)使用的选定候选键。

说了这么多,现在我可以回答你的问题了。如果您的表遵循规则并且特别是所有行都是唯一的,那么将至少有一个候选键,最坏的情况是在所有列上。如果您的表的行不是唯一的,则该表不代表关系并且正常形式不适用。可以添加代理键(如自动增量列)来唯一地标识行,但这本身并不一定足以使表表示关系 (1NF)。

顺便说一句,我建议您避免使用“0NF”或“UNF”。非关系表没有标准化级别,因此将任何类型的“NF”附加到它们上都会产生误导。