数据库设计三大范式

简介

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

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

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

DEMO

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

第一范式(1NF)

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

 

  技术分享

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

第二范式(2NF)

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

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

技术分享

第三范式(3NF)

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

技术分享

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。