发表于 2021-12-18 11:07:56
第二范式 (2NF) 是什么意思?
第二范式 (2NF) 是规范化数据库的第二步。2NF 建立在第一范式 (1NF) 之上。
规范化是在数据库中组织数据以满足两个基本要求的过程:
没有数据冗余(所有数据只存储在一个地方)。
数据依赖是合乎逻辑的(所有相关数据项都存储在一起)。
1NF 表是 2NF 形式的当且仅当其所有非主要属性在功能上都依赖于每个候选键的整体。
满足1NF的要求后,2NF要求数据库设计者做以下工作:
拆分导致多对多关系的所有数据,并将数据存储为单独的表。例如,在学校应用程序使用的数据库中,其中两个表是 STUDENT 和 SUBJECT。在现实生活中,一个学生同时学习多个科目,而一个科目由多个学生学习。这些是多对多的关系。2NF 指出,这种关系必须拆分为不止以上两个表(STUDENT 和 SUBJECT)。拆分它们的一种方法是引入第三个表,其中包含 Student_ID、Subject_ID、Semester 和 Year 列。这样,STUDENT 和 SUBJECT 之间就没有直接关系,因为所有关系都是通过第三个表间接创建的。
使用外键创建表之间的关系。例如,银行的数据库包含两个表:CUSTOMER_MASTER(用于存储客户详细信息)和 ACCOUNT_MASTER(用于存储有关银行帐户的详细信息,包括哪个客户持有哪个帐户)。必须有一种方法可以链接这两个表,以了解每个帐户的客户是谁。这样做的方法是通过外键,它是 ACCOUNT_MASTER 表中的一列,指向 CUSTOMER_MASTER 表中的相应列。
对主键没有部分函数依赖关系的表可能在也可能不在 2NF 中。除了主键,表中可能包含其他候选键;有必要确定没有非主属性对这些候选键中的任何一个具有部分键依赖性。 |
|