范式概述:
范式就是符合某一规范级别的关系模式的集合。数据库共有7种范式: 从低到高分别是: 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF
注意:
1) 实际开发中, 我们一般使用前三种范式, 用的最多的是"2NF"
2) 范式之间满足"向下兼容"的特点: 即: 如果满足了"3NF", 则兼容"1NF", "2NF"的规则.
第一范式:(First Normal Form)
概述:如果一个关系模式R的所有属性都是不可分割的基本数据项,则这个关系属于第一范式。
举例:
(学生选课:学号,姓名,系别,系部地址,课程名称,课程成绩)
Student(s_no,s_name,s_dept,s_location,s_course_name,s_grade)
注意:
1NF 是关系模式应具备的最起码的条件,如果数据库设计不能满足第一范式, 就不能称作是关系模式;关系数据库设计研究的关系规范化是在1NF基础之上进行的。
第二范式: (Second Normal Form)
概述
若关系模式R属于第一范式,且每个非主属性都是完全函数依赖于主键,则R属于第二范式。
说明: //创建一个表, 设置一个主键, 他就是满足"第二范式"的.
从2NF的定义可以看出,从2NF开始讨论的是主键和非主属性之间的函数依赖关系,所以分析关系模式是属于2NF,首先指明关系模式的主键,然后在讨论非主属性和主键之间的函数依赖关系。
例如:
选课关系模式SC(s_no,c_no,score)中,主键为(s_no,c_no),而非主属性score与主键之间不存在部分函数依赖关系,所以关系模式SC属于2NF
第三范式:(Third Normal Form)
概述:
若关系模式R属于第一范式,且每个非主属性都不传递函数依赖于主键,则R属于第三范式。
说明:
3NF说明的是非主属性和主键之间的函数依赖关系.
例如:
选课关系模式SC(s_no,c_no,score)中,由于除了主键之外,只有一个非主属性score, 所以score不可能构成与主键之间的传递函数依赖,所以SC属于3NF
总结:
标签:关系,非主,范式,原则,no,数据库,2NF,遵循,主键 From: https://blog.51cto.com/u_12277263/5809081优点:
1) 范式主要说明的就是: 设计表的时候, 扩展拆分(分离)程度.
2) 范式越高, 会让扩展的程度变得更好.
缺点:
编写SQL语句时会变得更加的繁琐.