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

MySQL学习笔记(6)之设计范式

时间:2015-11-09 01:52:39      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:mysql   学习笔记   mysql入门   

设计范式(NF = Normal Format

范式:规范的格式。

范式是设计关系数据库必须遵守的规则。

如果我们满足了设计范式的要求,则数据库会简洁,结构清晰。

反之,会出现数据冗余,还有插入、删除、修改数据出现异常。

 

 设计范式种类:1NF2NF3NFBCNF(巴德斯科范式)、4NF5NF(完美范式)。

1NF是最宽松的,依次递增限制越大。

一般数据库只需要满足到3NF就可以了。

 

11NF(第一范式):字段的原子性

要求:数据是二维表,每一列都不能在分割,属性不能再分割,字段保证原子性。

不满足1NF的数据库,则为非关系型数据库。


不满足1NF的2个例子:

name
telage
小明

13988774444,01115945612

1
小红168123147250


name手机,座机age
小明13988774444011159456121
小红16812314725,无0


解决办法:

name手机座机age
小明13988774444011159456121
小红168123147250


22NF(第二范式):消除部分(不完全)依赖

要求:满足1NF的前提下,消除字段对主键的部分依赖,从而完全依赖于主键。

依赖:如果字段A一旦确定,则可以指出B字段的值。

部分(不完全)依赖:依赖其中某个部分的值。

    

        不满足2NF的例子:

学生

课程

老师姓名

老师学历

课程教材

上课教室

上课时间

小明二年级语文上张三研究生二年级语文上册1028:00
小红五年级数学上李四博士五年级数学上册30616:00

        一个课程,一定指定了某个教材,一年级语文上肯定用的是《一年级语文上册》,那么就有课程推出教材。课程决定了教材,这就叫做部分依赖。


        解决办法,拆分成二个或者若干个表:

学生课程老师老师学历上课教室上课时间
小明二年级语文上张三研究生1028:00
小红五年级数学上李四博士30616:00


课程

教材

二年级语文上二年级语文上册
五年级数学上五年级数学上册


33NF:消除传递依赖

要求:满足2NF的前提下消除传递依赖。

当表里存在不只一类独立实体,数据也可能存在冗余,在插入、修改、删除、时可能出现混乱的情况。

 

↓解决办法:拆分成3个表,利用主键建立关系。

学生学号

学生姓名

学生课程

教师

110小明001578
911小红005561


课程ID

课程名称教材名称

001

二年级语文上

二年级语文上册

005

五年级数学上

五年级数学上册


教师ID

老师姓名

老师学历

578张三研究生
561李四博士


4BC范式(BCNF):符合3NF,并且主属性不依赖于主属性

若关系模式属于第一范式,且每个属性都不传递依赖于键码,则R属于BC范式。

通常BC范式的条件有多种等价的表述:每个非平凡依赖的左边必须包含键码;每个决定因素必须包含键码。

BC范式既检查非主属性,又检查主属性。当只检查非主属性时,就成了第三范式。满足BC范式的关系都必然满足第三范式。

还可以这么说:若一个关系达到了第三范式,并且它只有一个候选码,或者它的每个候选码都是单属性,则该关系自然达到BC范式。

一般,一个数据库设计符合3NFBCNF就可以了。在BC范式以上还有第四范式、第五范式。

 

 

5第四范式:要求把同一表内的多对多关系删除。

 

6第五范式:从最终结构重新建立原始结构。


本文出自 “一起学习交流” 博客,请务必保留此出处http://chenhaolinux.blog.51cto.com/9609922/1710794

MySQL学习笔记(6)之设计范式

标签:mysql   学习笔记   mysql入门   

原文地址:http://chenhaolinux.blog.51cto.com/9609922/1710794

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