- A+
数据库物理设计要做什么:
1、选择合适的数据库管理系统。
2、定义数据库,表及字段的命名规范。
3、根据所选择的DBMS系统选择合适的字段类型。
4、反范式化设计。
一、选择哪种数据库:
Oracle和SqlServer是商业数据库。(适合企业级项目)
mysql和pgsql是开源数据库。(适合互联网项目)
二、表及字段的命名规范:
1、可读性原则。通过大小写格式化名字。如CustAddress而不是custaddress。
2、表意性原则。见名知意。如表的过程应该能体现存储的数据内容。
3、长名性原则。尽量少或不使用缩写。
三、字段类型的选择
数据类型一方面影响数据存储空间的开销,另一方面也会影响数据查询性能。
当一个列可以选择多种数据类型时,应该优先选择数据类型,其次是日期或二进制类型,最后是字符类型。
对于相同级别的数据类型,应该优先选择占用空间小的数据类型。
以上选择原则主要是从以下两个角度考虑:
1、在对数据进行比较(查询条件,JOIN条件及排序)操作时,同样的数据,字符处理往往比数字处理慢。
2、在数据库中,数据处理以页为单位,列的长度越小,利于性能提升。
具体如何选择呢?
char与varchar如何选择:
1、如果列中要存储的长度差不多是一致的额,则应该考虑选择char;否则应该考虑用varchar。(如手机号码,身份证号码)
2、如果列中的最大数据长度小于50byte,则一般也考虑char。如果这个列很少用,也可以选择varchar
3、一般不宜定义大于50byte的char类型列。
decimal与float如何选择:
1、精确选decimal。
2、非精确选float,因为占用空间小。
时间类型如何存储:
对于只是查询显示或变动不频繁的日期,用int。
经常要使用的话,用datetime。
1、用int来存储时间字段的优缺点:
优点;字段长度比datetime小。
缺点:使用不方面,要进行函数转换才能看懂。
限制:只能存储到2038-1-19 11:14:07。即2的32次方
2、需要存储的时间粒度。
年 月 日 小时 分 秒 周
其他:
如何选择主键:
1、区分业务主键和数据库主键:
业务主键:标示业务数据,进行表与表之间的关联。
数据库主键:优化数据存储。(Innodb会生成6个字节的隐含主键)
2、根据数据库的类型,考虑主键是否需要顺序增长。
3、主键的字段类型所占空间要尽可能小。
避免使用外键约束:
1、降低数据导入的效率
2、增加维护成本
3、虽然不建议使用外键约束,但是相关联的列上一定要建立索引。
避免使用触发器:
1、降低数据导入的效率
2、可能会出现意想不到的数据异常
3、是业务逻辑变的复杂。
严禁使用预留字段:
1、无法准确的知道预留字段的类型
2、无法准确的知道预留字段中所存储的内容
3、后期维护预留字段所要的成本,同增加一个字段所需要的成本是相同的。
四、反范式化设计
为了性能和读取效率的考虑而适当的对第三范式的要求进行违反,而允许存在少量的数据冗余。
也就是用空间来换时间。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫