第二范式(2NF)
要以第二种形式规范化数据库,主键上的任何列都不得有任何部分依赖关系。
让我们考虑以下示例:
ID |
名称 | DOB | 学科 |
---|---|---|---|
1 |
标记 | 1981 年 1 月 1 日 | 物理 |
2 |
插口 | 1982 年 2 月 2 日 | 数学 |
2 |
插口 | 1982 年 2 月 2 日 | 生物学 |
3 |
约翰 | 1983 年 3 月 3 日 | 数学 |
此表被视为具有复合主键( id 和 subject ),但* name 和 dob 列仅取决于 id ,而不取决于主题,因此它们对主键具有部分依赖性。结果,我们可以看到表中信息的冗余。要以第二种形式规范化数据库,我们必须将此表拆分为两个表,如下所示:
学生表
ID |
名称 | DOB |
---|---|---|
1 |
标记 | 1981 年 1 月 1 日 |
2 |
插口 | 1982 年 2 月 2 日 |
3 |
约翰 | 1983 年 3 月 3 日 |
主题表
学生卡 | 学科 |
---|---|
1 |
物理 |
2 |
数学 |
2 |
生物学 |
3 |
数学 |
该 student_id 数据的列对象表是一个外键引用主键 ID 的的学生表。