MySql优化(二)范式与反范式

范式是什么?

简单给大家百度一下什么是范式
范式(数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。
目前关系数据库有六种范式 咱们先讲解三种

第一范式(1NF)

1NF的定义:一张表每一列都拆分到不可拆分 数据库表中不能出现重复记录 则符合第一范式 (原子性)
例1:
MySql优化(二)范式与反范式_第1张图片
上面班级信息列则不符合1NF范式应该进行拆分
例2
MySql优化(二)范式与反范式_第2张图片

上面则满足第一范式的要求
当完成第一范式后会发现存在了很多问题如
1.如果电风扇新增了 数学成绩则又会多一条 这样存在很多冗余数据
2.并且如果更换了班级则是个很麻烦的过程
3.如果将六班的学生全部删除则6班也不存在了
上述问题解决需要进行第二范式(2NF)

第二范式(2NF)

2NF的定义:如果一个关系满足第一范式,并且除了主键之外的其他列,都依赖于该主键,则满足第二范式
例1
MySql优化(二)范式与反范式_第3张图片

MySql优化(二)范式与反范式_第4张图片
表一中分数完全依赖于学生ID和课程的属性
表二中姓名、年级、老师完全依赖于学生ID
第二范式消除了第一范式的部分依赖
但是上面以然没解决班级和班主任的问题 如果六级六班有很多学生 还是会有很多六年级六班强强老师

第三范式(3NF)

3NF的定义:在第二范式的基础上更进一步,目标是确保表中的列都和主键直接相关,而不是间接相关。
例1
MySql优化(二)范式与反范式_第5张图片MySql优化(二)范式与反范式_第6张图片
MySql优化(二)范式与反范式_第7张图片

范式的利弊

优点:范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦。
缺点:按照范式的规范设计出来的表,等级越高的范式设计出来的表越多。如第一范式可能设计出来的表可能只有一张表而已,再按照第二范式去设计这张表时就可能出来两张或更多张表,如果再按第三范式或更高的范式去设计这张表会出现更多比第二范式多 的表。表的数量越多,当我们去查询一些数据,必然要去多表中去查询数据,这样查询的时间要比在一张表中查询中所用的时间要高很多。也就是说我们所用的范式越高,对数据操作的性能越低。所以我们在利用范式设计表的时候,要根据具体的需求再去权衡是否使用更高范式去设计表。

反范式:

故名思义,跟范式所要求的正好相反,在反范式的设计模式,我们可以允许适当的数据的冗余,用这个冗余去取操作数据时间的缩短。也就是用空间来换取时间,把数据冗余在多个表中,当查询时可以减少或者是避免表之间的关联。
反范式的利弊:
优点:查询时可以减少表的关联;可以更好的进行索引优化;
缺点:存在数据冗余以及数据维护异常;对数据的修改需要更多的成本;

你可能感兴趣的:(Mysql,mysql)