type
status
date
slug
summary
tags
category
icon
password
数据库三范式(3NF)是数据库设计中的一种规范化形式,用于减少数据冗余并提高数据的完整性。三范式包括以下三个层次:第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。要符合第三范式,数据库首先必须符合前两个范式的要求。
第一范式(1NF)
第一范式要求每一个列中的值都是不可分割的原子值,这意味着表中的每一个字段都必须是不可再分的最小数据单位。
要求:
- 表中的每一列都应该只包含单一值。
- 每一列中的值应该是同质的(即同一列中的值应该属于同一数据类型)。
例子:
不符合1NF的表:
符合1NF的表:
第二范式(2NF)
第二范式在第一范式的基础上进一步要求,消除非主键字段对部分主键的依赖。具体来说,如果一个表中存在复合主键,那么表中的每一个非主键字段必须完全依赖于整个主键,而不是仅依赖于主键的一部分。
要求:
- 首先满足第一范式。
- 非主键字段必须完全依赖于候选键的全部,而不能仅依赖于候选键的一部分。
例子:
不符合2NF的表(假设学生ID和课程名共同组成复合主键):
符合2NF的表:
学生表:
成绩表:
第三范式(3NF)
第三范式在第二范式的基础上进一步要求,消除非主键字段之间的传递依赖。具体来说,一个非主键字段不应该依赖于另一个非主键字段,而是应该直接依赖于主键。
要求:
- 首先满足第二范式。
- 非主键字段不能依赖于其他非主键字段,必须直接依赖于候选键。
例子:
不符合3NF的表:
符合3NF的表:
系表:
学生表:
总的来说,三范式的主要目的是减少数据冗余、提高数据的一致性和完整性,确保数据库中的每个非主键字段都能直接依赖于主键,而不是通过其他非主键字段间接依赖于主键。
- 作者:Yohann
- 链接:https://yohann.19990617.xyz/article/db3nf
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章