目标:什么是设计范式,设计范式有那几种
设计范式
在关系数据库中,范式是用于规范化数据库设计的一组原则。它们旨在减少数据冗余、提高数据一致性和减少数据更新异常。MySQL数据库可以按照范式设计,常见的范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BC范式(BCNF)。
第一范式(1NF)
确保每个表中的每一列都是原子的,不可再分的。表中的每个字段应该只包含单一的数据值,而不是重复的数据集合。
第二范式(2NF)
在满足1NF的基础上,确保表中的非主键字段完全依赖于整个主键,而不是部分依赖于主键。换句话说,每个非主键字段必须直接依赖于整个主键。
第三范式(3NF)
在满足2NF的基础上,确保表中的非主键字段不依赖于其他非主键字段。换句话说,表中的每个非主键字段只应该依赖于主键或其他唯一键。
BC范式(BCNF)
在满足3NF的基础上,进一步消除主键和非主键之间的依赖关系。表中的每个非主键字段都不应该依赖于其他非主键字段,而是完全依赖于主键。
范式化设计的优缺点
优点
- 减少冗余
- 减少数据的插入、更新、删除异常
- 让数据的关系之间更清晰明了
缺点
- 查询需要关联多个表
- 对查询性能有一定影响
反范式化设计
反范式化(Denormalization)是在数据库设计中的一种技术,旨在提高查询性能和简化复杂查询操作。它违反了范式化的原则,通过增加冗余数据来优化读取操作的性能。在MySQL中,可以使用反范式化设计来满足特定的业务需求,尤其是对于大型数据集或复杂查询场景。
- 冗余数据:通过将相关数据复制到其他表中,避免了频繁的表关联操作,从而提高查询性能。例如,将某个实体的属性冗余到其他表中,避免多表关联查询。
- 聚合数据:将多个关联表的数据聚合到一个表中,以减少关联查询的复杂性。例如,将多个子表中的数据聚合到一个父表中,以简化复杂的查询操作。
- 范式化设计和反范式化设计都需要把握一个度,在效率和少量数据冗余之间平衡选择
物理设计建议
库和表
- 所有数据库对象名称必须使用小写字母可选用下划线分隔。
- 所有数据库对象名称定义禁止使用MySQL保留关键字。
- 数据库队形的命名要能做到见名识义,并且最好不超过32个字。
- 临时表必须以tmp为前缀并以日期为后缀。
- 用于备份的库、表必须以bak为前缀并以日期为后缀。
- 所有存储相同数据的列名和列类型必须一致。
字段类型
字段类型的设计尽量贴合需求:链接
Comments NOTHING