数据库设计的三大范式介绍

一、简介

      关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库。主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦,但遵循范式越高,性能就会越差。

二、

     1、第一范式(1NF):如果关系模式R的每个关系r的属性都是不可分的数据项,那么就称R是第一范式的模式。 
简单来说:数据表中的列(字段)都必须是不可拆分的最小单元,每一个属性都是原子项。
     例如:员工信息表,具有编号,姓名,联系方式等属性

    编号    姓名    联系方式
    1       张三    zhangsan@123.com|13122223333
    2       李四    lisi@123.com|13133332222

    其中联系方式,存储了邮箱和手机号,虽然可以表达员工联系方式,但是不符合第一范式。
联系方式可以拆分成原子项手机号码和邮箱,来符合第一范式。

    编号    姓名    手机号码    邮箱            
    1       张三    13122223333 zhangsan@123.com
    2       李四    13133332222 lisi@123.com

     2、第二范式(2NF):如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么就称R是第二范式。

简单来说:满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系。

     例如:员工信息表,具有编号,姓名,请假编号请假原因等属性

    编号    姓名     请假编号    请假原因
    1       张三     1002        身体不适
    2       李四     1002        去医院检查

      在员工信息表中请假编号和请假原因虽然是原子项,但和员工信息表述是两类模型,第二范式要求一张表描述一类模型。
可以将请假信息再拆分为一张表,来符合第二范式。

     3、第三范式(3NF):如果关系模式R是2NF,且关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖,则称关系R是属于第三范式。

以员工信息表和请假表为例,拆分为:

一、员工信息表
    编号    姓名    手机号码    邮箱            
    1       张三    13122223333 zhangsan@123.com
    2       李四    13133332222 lisi@123.com
二、请假表
    请假编号   员工编号    员工姓名    请假原因    
    1002       1           张三        身体不适    
    1002       2           李四        去医院检查

其中请假表只需要用员工编号关联员工信息表,不需要通过员工姓名来关联员工信息表,这就不符合第三范式。

 

yexiangyang

moyyexy@gmail.com


 

posted @ 2018-02-22 12:43  墨阳  阅读(355)  评论(0编辑  收藏  举报