码迷,mamicode.com
首页 > 数据库 > 详细

数据库设计三大范式

时间:2014-12-28 15:31:47      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

简介

  设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。然而会给查询带来诸多不便。

  最为常见的范式为:第一范式(1NF)、第二范式(2NF)、第三范式(3NF),满足高等级的范式的先决条件是满足低等级范式。(比如满足 2NF 一定满足 1NF )

  对于一般的数据库只需满足第三范式(3NF)即可。

DEMO

  以学生选课为例,具体字段为:学号,学生姓名、年龄、性别、学生班级、班级老师、课程、课程学分

第一范式(1NF)

  简单的说,第一范式就是每一属性都不可再分。不符合第一范式则不能称为关系数据库。

 

  技术分享

  上表所示的用户信息遵循了第一范式的要求。

第二范式(2NF)

  要求实体的属性完全依赖于主键。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。

  如:第一范式中当同一个学生选择多个课程时,则年龄、性别、学生班级、班级老师出现冗余。所有课程需要单独提出

技术分享

第三范式(3NF)

  在2NF基础上消除传递依赖。如:2NF中ClassTeacher不是由StudentID所决定,而是由StudentClass决定。

技术分享

 

数据库设计三大范式

标签:

原文地址:http://www.cnblogs.com/borist/p/4189918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!