数据库物理结构设计

  • 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、后期维护预留字段所要的成本,同增加一个字段所需要的成本是相同的。


四、反范式化设计

为了性能和读取效率的考虑而适当的对第三范式的要求进行违反,而允许存在少量的数据冗余。

也就是用空间来换时间

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: