数据库设计的三大范式介绍
一、简介
关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库。主要有六种范式:第一范式、第二范式、第三范式、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