数据库物理设计
数据库物理设计要做什么:
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、虽然不建议使⽤外键约束,但是相关联的列上⼀定要建⽴索引。oracle decimal类型
避免使⽤触发器:
1、降低数据导⼊的效率
2、可能会出现意想不到的数据异常
3、是业务逻辑变的复杂。
严禁使⽤预留字段:
1、⽆法准确的知道预留字段的类型
2、⽆法准确的知道预留字段中所存储的内容
3、后期维护预留字段所要的成本,同增加⼀个字段所需要的成本是相同的。
四、反范式化设计
为了性能和读取效率的考虑⽽适当的对第三范式的要求进⾏违反,⽽允许存在少量的数据冗余。也就是⽤空间来换时间。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论