数据库结构设计
范式
设计数据库的规范 第12345范式,凡是之间有依赖关系。
关系模型的发明者埃德加·科德最早提出这一概念,并于1970
年代初定义了第一范式、第二范式和第三范式的概念
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范
式,各种范式呈递次规范,越高的范式数据库冗余越小
第一范式 1NF
- 没有重复的列,每一列都是不可分割的基本数据项
- 同一列里不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性。
说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库
多个主键组合起来的,称为复合主键
复合主键违反了第二范式
第二范式
- 属性完全依赖于主键,
- 第二范式必须先满足第一范式,
- 要求表中的每个行必须可以被唯一地区分,
- 通常为表加上每行的唯一标识PK,
- 非PK的字段需要与整个PK有直接相关性 重点在整个!
第三范式
- 属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。
- 第三范式要求一个数据表中不包含已在其它表中已包含的非主关键字信息
- 非PK的字段间不能有从属关系
范式得意义
- 好处
1.范式越多,数据库设计约严谨
2.范式越多,空间越节约 - 带来的问题
1.复杂性越高
2.效率越低
达到第三范式生产中就够用了,第四第五范式生产中很少用到
学习范式就是为了违反范式,追求高性能,故意违反范式
第四范式
巴斯-科德范式(BCNF)
Boyce-Codd Normal Form(巴斯-科德范式)
在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)
巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF)必须满足第三范式(3NF)。通常情况下,巴斯-科德范式被认为没有新的设计规范加入,只是对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式,也就是说,它事实上是对第三范式的修正,使数据库冗余度更小。这也是BCNF不被称为第四范式的原因。某些书上,根据范式要求的递增性将其称之为第四范式是不规范,也是更让人不容易理解的地方。而真正的第四范式,则是在设计规范中添加了对多值及依赖的要求。
第五范式
第五范式是指关系模式R依赖均由R候选码所隐含。 这都开始不说人话了