MySql业务设计
MySql业务设计
范式设计
- 第一大范式 数据库表中的所有字段都只具有单一属性
- 第二大范式 要求表中只具有一个业务主键
- 第三大范式 指每一个非主属性之间不能有互相依赖关系
问题:完全符合范式化的设计有时并不能得到良好得SQL查询性能
timestamp 和时区有关,而datetime无关
反范式化设计
为了性能和读取效率得考虑而适当得对数据库设计范式得要求进行违反,允许存在少量得冗余,换句话来说反范式化就是使用空间来换取时间,不能完全按照范式得要求进行设计。
| 优点 | 缺点 | |
|---|---|---|
| 范式化 | 可以尽量得减少数据冗余 范式化的更新操作比反范式化更快 范式化的表通常比反范式化的表更小 |
对于查询需要对多个表进行关联 更难进行索引优化 |
| 反范式 | 可以减少表的关联 可以更好的进行索引优化 |
存在数据冗余及数据维护异常 对数据的修改需要更多的成本 |
物理设计
定义数据库、表及字段的命名规范
可读性原则、表意性原则(意思清晰)、长名原则(不使用缩写)
选择合适的存储引擎
为表中的字段选择合适的数据类型
- 优先考虑数字类型
- 其次是日期、时间类型
- 最后是字符类型
- 对于相同级别的数据类型,应该优先选择占用空间小的数据类型。金额类除外,建议使用DECIMAL类型。(其它:timestamp和时区有关,而datetime无关)
建立数据库结构