数据库范式:
范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出低效的库表结构。
数据库范式分类:
第一范式、第二范式、第三范式、BC范式(巴斯-科德范式)、第四范式、第五范式(完美范式)
一般的数据库设计会在第一范式的基础之上进行进一步的优化,变成二范式然后在二范式的基础之上进行再次的优化变成的第三范式。通常的数据库设计采用的大多数就是第一、第二、第三范式。
第一范式:注重的是数据的原子性。即每个数据字段的属性都不能进行进一步的拆分
第二范式:第二范式在第一范式的基础之上,进行进一步的优化。完全函数依赖。简单的理解就是。数据表中的非主属性必须完全依赖主键。不存在部分函数依赖的关系。
第三范式:所谓的第三范式就是在第二范式的基础之上,不存在传递函数依赖。就是第三范式。
二三范式的区别:
-
第二范式:非主键列是否依赖主键(包括一列通过某一列间接依赖主键),要是有依赖关系就是第二范式;
-
第三范式:非主键列是否直接依赖主键,不能是那种通过传递关系的依赖。要是符合这种依赖关系就是第三范式。
那么在实际的数据库的设计过程中是不是就是要严格按照数据库的范式进行数据库设计呢?答案当然是否 原因是完全根据数据库的范式进行设计的数据库表结构,不一定会完全吻合实际的业务。往往设计的范式越高的表结构。实际使用的时候关联的表比较多,性能比较堪忧:关于范式的优缺点如下:
优点:
-
1 避免数据冗余,减少维护数据完整性的麻烦;
-
2 减少数据库的空间;
-
3 数据变更时间快;
缺点:
-
1 按照范式的规范设计的表,等级越高的范式设计出来的表数量越多。
-
2 关联的数据表多,查询时性能比较差。
反范式的设计与使用:
反范式的设计一般会根据以下三方面来进行考虑:
(1)业务的使用场景
(2)响应时间
(3)字段的冗余
反范式设计就是用空间来换取时间,提高业务场景的响应时间,减少多表关联。主要的优点如下。
- 允许适当的数据冗余,业务场景中需要的数据几乎都可以在一张表上显示,避免关联;
- 可以设计有效的索引。
Mysql 设计原则和设计规范:
MySQL 虽然具有很多特性并提供了很多功能,但是有些特性会严重影响它的性能,比如,在数据库里进行计算,写大事务、大 SQL、存储大字段等。
数据库设计三原则:
- 首先是需要让 MySQL 回归存储的基本职能:MySQL
数据库只用于数据的存储,不进行数据的复杂计算,不承载业务逻辑,确保存储和计算分离;与业务逻辑相关的业务代码最好在程序之中进行处理。 - 其次是查询数据时,尽量单表查询,减少跨库查询和多表关联;尽量合理的使用反范式。
- 还有就是要杜绝大事务、大 SQL、大批量、大字段等一系列性能杀手。
(1)大事务,运行步骤较多,涉及的表和字段较多,容易造成资源的争抢,甚