①
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
A:数据库表中所有字段都只具有单一属性
B:单一属性的列是由基本数据类型组成
C:设计出来的表都是简单的二维表
第一范式就是无重复的列。
②
A:要求表中只具有一个业务主键【不能存在非主键列对主键的依赖关系】
③
A:每一个非主属性既不部分依赖于也不传递依赖于业务主键
备注:完全满足三大范式设计的表结构,有时候得不到良好的SQL查询性能。
反范式化设计
① 反范式化设计针对范式化设计而言,
②反范式化是为了性能和读取效率而 适当的对数据库设计范式要求进行违反
③允许存在少量冗余,换句话说就是 使用空间来换时间
范式化设计的优缺点
优点:
①尽量减少数据冗余
②数据操作快
③表小
缺点:
①数据查询需要关联多表
②更难添加索引
反范式化设计的优缺点
优点:
①减少表关联
②更好的索引优化
缺点:
①存在数据冗余及数据异常维护
②数据修改存在更高成本
物理设计
定义数据库、表及字段命名规范
- 可读性原则【custAddress而不是custaddress】
- 表意性原则 【提现存储的数据内容 或体现存储过程的功能】
- 长名原则 【尽可能减少使用或者不用缩写】
选择合适的存储引擎
表中字段合适的数据类型
- 优先考虑数字类型
- 其次是日期、时间类型
- 最后是字符类型
- 对于相同级别的数据类型,应该优先选择占用空间小的数据类型
浮点类型:
列类型 | 存储空间 | 是否精确类型 |
float | 4个字节 | 否 |
double | 8个字节 | 否 |
decimal | 每4个字节存9个数字,小数点占一个字节 | 是 |
日期类型:
timestamp类型 5.6之前占用空间8个字节 之后5个字节 与时区有关
datatime类型 占用空间4个字节 与时区无关