三大范式介绍
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
而通常我们用的最多的就是第一范式(1NF)、第二范式(2NF)、第三范式(3NF),也就是本文要讲的“三大范式”。
- 三大范式是什么?
数据库设计表时,有三种规则或者原则,叫做三大范式
(1)第一范式是什么?
确保每一列的原子性(做到每列不可拆分)-- 拆列
(2)第二范式是什么?
在第一范式的基础上,每列都和主键(直接或间接)相关 --拆表
产品数量、产品折扣、产品价格与“订单号”和“产品号”都相关,但是订单金额和订单时间仅与“订单号”相关,与“产品号”无关
(3)第三范式是什么?
第三范式(3NF):在第二范式的基础上,每列都和主键直接相关(数据比较少冗余的) – 使用外键
所有属性都完全依赖于学号,所以满足第二范式,但是“班主任性别”和“班主任年龄”直接依赖的是“班主任姓名”,而不是主键“学号
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201027195106721.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMTUwNTIw,size_16,color_FFFFFF,t_70#pic_center)
反三范式介绍
(1)反三范式是什么?
反三范式是基于第三范式所调整的,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。
(2)目的是什么?
》》1:为了更好地方便地满足业务需求
》》2:为了获取更高的数据库查询性能
规范度 VS 效率
我们在设计数据库的时候,既要考虑数据库的规范度,同时也要考虑数据库的执行效率