标签:范式理论
目前的关系型数据库有六种范式:第一范式(1NF),第二范式(2NF),第三范式(3NF),第四范式(四NF),第五范式(5NF),第六范式(6NF)。满足最低要求的范式是第一范式。在第一范式的基础上进一步满足更多要求的称为第二范式,其余的范式依次类推。一般说来,数据库满足第三范式即可。
第一范式是最低的规范化要求,第一范式要求数据表不能存在重复的记录,即存在一个关键字。1NF的第二个要求是每个字段都不可再分,即已经分到最小,关系数据库的定义就决定了数据库满足这一条。第一范式是设计数据库表的最低要求,其最主要的特点就是实体的属性不能再分,映射到表中,就是列(字段)不能再分,如下:
学号 |
姓名 |
联系方式 |
101 |
李晓峰 |
0995-23451214 675423369 |
如上面的联系方式还可以再分,这样就不符合第一范式,我们应该这样子改:
学号 |
姓名 |
电话 |
|
101 |
李晓峰 |
0995-23451214 |
675423369 |
第二范式:
如果一个关系属于1NF,且所有的非主关键字段都完全地依赖于主关键字,则称之为第二范式,简记为2NF
姓名 |
选秀课程 |
教材 |
张三 |
Struts2 |
Struts2完全手册 |
李四 |
Struts2 |
Struts2完全手册 |
李四 |
Oracle12c |
Oracle开发手册 |
上面的这个表是符合第一范式的,但是上面的数据中可以看出,姓名和选秀的课程是有对应的关系,但是姓名和教材是没有什么对应的关系,但是选秀课程和教材是有关系的,所以我们应该设计如下的表:
姓名 |
选秀课程 |
张三 |
Struts2 |
李四 |
Struts2 |
李四 |
Oracle12c |
课程 |
教材 |
Oracle12c |
Oracle开发手册 |
Struts2 |
Struts完全手册 |
第三范式
如果一个关系属于2NF,且每个非关键字不传递依赖于主关键字,这种关系是3NF。如下:
学好 |
姓名 |
班级 |
系别 |
101 |
张三 |
C++1班 |
计算机技术 |
102 |
李四 |
英语1班 |
外语专业 |
上面的表示符合第二范式的,但是如果我们已经知道了这个学生所在的班级的话,那么我们也就可以知道了这个学生所在的系别,那么就是说系别信息是多余的。我们如下设计:
学好 |
姓名 |
班级 |
101 |
张三 |
C++1班 |
102 |
李四 |
英语1班 |
班级 |
系别 |
C++1班 |
计算机技术 |
英语1班 |
英语1班 |
标签:范式理论
原文地址:http://blog.csdn.net/qq_20545159/article/details/43759385