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

设计范式(NF = Normal Format

范式:规范的格式。

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

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

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

 

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

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

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

 

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

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

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


不满足1NF的2个例子:

name
tel age
小明

13988774444,01115945612

1
小红 16812314725 0


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


解决办法:

name 手机 座机 age
小明 13988774444 01115945612 1
小红 16812314725 0


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

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

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

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

    

        不满足2NF的例子:

学生

课程

老师姓名

老师学历

课程教材

上课教室

上课时间

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

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


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

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


课程

教材

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


33NF:消除传递依赖

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

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

 

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

学生学号

学生姓名

学生课程

教师

110 小明 001 578
911 小红 005 561


课程ID

课程名称 教材名称

001

二年级语文上

二年级语文上册

005

五年级数学上

五年级数学上册


教师ID

老师姓名

老师学历

578 张三 研究生
561 李四 博士


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

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

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

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

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

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

 

 

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

 

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


你可能感兴趣的:(mysql,学习笔记,MySQL入门)