Nip*_*mal 1 database database-design relational-database database-normalization
在给定的表中,如果没有主键甚至不可能创建复合主键,那么该表的正常形式是什么?
如果它的零(0NF)添加一个新列并使其成为主键会将这个表转换为 1NF ?
范式适用于关系,即数学结构。表格可以用来表示关系,但这需要一些规则来确保表格包含的信息不会多于或少于对应关系。
为了让表表示关系:
此外,关系模型关心候选键,而不是主键。一个关系可以有多个候选键。主键只是被某些学科(例如实体关系模型)或某些数据库管理系统(例如用于物理记录排序)使用的选定候选键。
说了这么多,现在我可以回答你的问题了。如果您的表遵循规则并且特别是所有行都是唯一的,那么将至少有一个候选键,最坏的情况是在所有列上。如果您的表的行不是唯一的,则该表不代表关系并且正常形式不适用。可以添加代理键(如自动增量列)来唯一地标识行,但这本身并不一定足以使表表示关系 (1NF)。
顺便说一句,我建议您避免使用“0NF”或“UNF”。非关系表没有标准化级别,因此将任何类型的“NF”附加到它们上都会产生误导。