数据库物理设计.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
数据库物理设计 数据库物理设计要做什么: 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、后期维护预留字段所要的成本,同增加⼀个字段所需要的成本是相同的。 四、反范式化设计 为了性能和读取效率的考虑⽽适当的对第三范式的要求进⾏违反,⽽允许存在少量的数据冗余。 也就是⽤空间来换时间。 数据库物理设计是数据库设计的关键环节,它涉及到数据库的实际存储结构和访问策略,直接影响到数据库的性能和效率。本文主要从四个方面介绍了数据库物理设计的核心内容。 选择合适的数据库管理系统至关重要。商业数据库如Oracle和SQL Server适合企业级项目,因为它们提供了强大的功能和稳定的服务。而开源数据库如MySQL和PostgreSQL则更适合互联网项目,由于其开源性质,可以降低成本并拥有灵活的定制能力。 定义良好的命名规范能提高代码的可读性和维护性。遵循可读性原则,采用大小写格式化名称,如CustAddress;表意性原则,确保表名能反映数据内容;以及长名性原则,尽量避免使用缩写,以减少误解。 再者,选择正确的字段类型对于存储空间和查询性能都有显著影响。在选择数据类型时,优先考虑数值类型,其次日期或二进制类型,最后是字符类型。例如,当数据长度一致时,考虑使用char,否则用varchar。对于存储长度小于50字节的列,char也是一个不错的选择。在精度要求高的情况下,选择decimal,否则使用更节省空间的float。时间类型的存储,如果仅用于查询显示,可以使用int,但须注意其时间范围限制;频繁使用的日期应使用datetime,以方便处理。 主键的选择是数据库设计中的关键决策。业务主键关注的是业务逻辑,用于表间关联;数据库主键则更多地服务于数据存储优化,InnoDB会自动生成隐含主键。主键应尽量选择占用空间小的字段类型,并考虑是否需要顺序增长,以优化存储和查询性能。 避免使用外键约束虽然可以提高数据导入速度和降低维护成本,但可能牺牲数据完整性和一致性。关联列应建立索引来保持查询效率。同时,不推荐使用触发器,因为它可能导致数据异常和复杂性增加。预留字段的使用应谨慎,因为不清楚其类型和内容,且后期维护成本高,不如一开始就规划好所需字段。 反范式化设计是在特定情况下,为提高性能和读取速度而适当引入数据冗余。这种做法牺牲了数据的规范化程度,换取更快的查询速度,通常适用于读多写少的场景。 数据库物理设计需要综合考虑数据库系统的特性、命名规范、字段类型选择、主键策略、外键和触发器的使用,以及数据冗余的权衡。通过合理的设计,可以实现高效、稳定的数据库系统。
- 粉丝: 105
- 资源: 9354
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助