目录
逻辑设计
范式设计
数据库设计的第一大范式:
数据库表中的所有字段都只具有单一属性
单一属性的列是由基本数据类型所构成的
设计出来的表都是简单的二维表
数据库设计的第二大范式:
要求表中只具有一个业务主键,也就是说符合第二范式的表不能存在非主键列只对部分主键依赖关系
数据库设计的第三大范式:
指非主键列既不能部分依赖于也不传递依赖于业务主键,也就是第二范式的基础上增加了非主键对主键的传递依赖
反范式设计
反范式化是针对范式化而言的
所谓的反范式化就是为了性能和读取效率的考虑而适当的对数据库设计范式要求进行违反
允许存在少量冗余,换句话来说反范式化就是使用空间来换取时间
范式化设计优缺点
优点:
可以尽量减少数据冗余
范式化吃的更新操作比反范式化更快
范式化的表通常比反范式化的表更少
缺点:
对于查询需要对多个表进行关联
更难进行索引优化
反范式化设计优缺点
优点:
可以减少表的关联
可以更好的进行索引优化
缺点:
存在数据冗余及数据维护异常
对数据的修改需要更多的成本
物理设计
命名规范
数据库、表、字段命名需要遵守可读性原则
使用大小写来格式化的命名可以获得良好的可读性
数据库、表、字段命名要遵守表意性原则
对象的名字应该能够描述它都表示的对象
数据库、表、字段的命名要遵守长名原则
极可能少使用或者不使用缩写
存储引擎选择
数据类型选择
当一个趔可以选择多种数据类型时
优先考虑数字类型
其次是日期、时间类型
最后是字符类型
对于相同级别的书类型,应该优先选择占用空间小的数据类型
浮点类型:
日期类型:
timestamp 4个字节,与时区有关
datetime 5个字节,与时区无关