数据库设计(二)之物理设计

物理设计要做什么

一.选择合适的数据库管理系统 

Oracle、SqlServer、MySql及PgSQL

  • 版权、成本考虑:

  • 功能上的考虑:

Oracle:业界内比较好的一种DBMS,性能很高,是适合大的事务操作。

  • 操作系统上的考虑:

SqlServerL只支持Windows系统下

Oracle、MySql及PgSQL:可支持linux系统、windows系统

  • 开发语言上的考虑:

如果使用.net开发语言,使用SQLServer比较好

  • 应用场景上的考虑:

mysql及PgSQL适用于互联网项目

Oracle、SqlServer适用于企业级项目(Oracle,如电信级、金融类,因为扩展性好,安全性高,SqlServer:中小型企业的erp)

介绍Mysql常用的存储引擎

 

二、定义数据库、表及字段的命名规范

所有对象命名原则:

1.可读性原则

 注意:大小写命名(驼峰),有的DBMS对大小写比较敏感,比如Mysql

2.表意性原则

对象的名字应该能够描述它所标识的对象。

例如:表名,可以体现存储的数据内容

          对于存储过程,存储过程名称应该体现存储过程的功能

3.长名原则

尽可能少使用或者不使用缩写。

适用于数据库DB名之外的任一对象

这样的命名,当只看表名、字段名,完全不知道该表是干什么的。在开发和后期运维时,可读性很差,需要完全依赖手册。

三.根据所选的DBMS系统选择合适的字段类型

 列的数据类型的选择:1.会影响数据存储空间的开销,2.影响数据查询的性能

字段类型选择的原则:

 当某列可以选择多种数据类型时,应优先考虑数字类型,其次是日期或二进制类型,最后是字符类型

对于相同级别的数据类型,应优先选择占用空间小的数据类型

 

 Mysql在MySQL内部使用4个字节INT类型来存放时间戳数据,时间戳类型,只能存储到2038年,因为现在已经2020年了,还是慎用哈。同理,int类型来存储时间也要慎用!

 以上原则主要从下面两个角度考虑:

1.在对数据进行比较时(查询条件、join条件及排序)等操作时:同样的数据,字符处理往往比数字处理慢

 2.在数据库中,数据处理以页为单位,列的长度越小,利于性能提升

数据库如何具体选字段类型:

  •  char与varchar如何选择?

1.如果列中要存储的数据长度差不多一致的,应考虑用char;否则应该考虑用varchar 。如:身份证号,手机号

2.如果列中最大数据长度小于50Byte,则一般也考虑char(如果该列很少用,则基于节省空间和减少I/O的考虑,还是选择用varchar)

3.一般不宜定义大于50Byte的char类型列。(差不多15个字符)

  • decimal与float如何选择

 1.decimal用于存储精确数据,二float只能用于存储非精确数据。

2.由于float的存储空间开销一般比decimal小,故非精确数据优先选择float类型

  • 时间类型如何存储

1.使用int来存储时间字段的优缺点

优点:字段长度比detetime小

缺点:使用不方便,要进行函数转换

限制:只能存储到2038-01-19 11:14:07,因为2^32为2147483648

2.需要存储的时间粒度 

年、月、日、小时、分、秒、周

四、数据库设计其他注意事项:

1.如何选择主键

2.避免使用外键约束

  •  降低数据导入的效率,高并发环境影响很严重
  • 增加维护成本
  • 隋然不建议使用外键约束,但是相关联的列上一定要建立索引

3.避免使用触发器

1.降低数据导入的效率

2.可能会出现意想不到的数据异常,尤其遇到业务需求变更

3.使业务逻辑变得复杂 

4.关于预留字段

 1.无法准确知道预留字段的类型。

2.无法准确的知道预留字段中所存储的内容

3.后期维护预留字段所要的成本,通增加一个字段所需要的成本是相同的

4.严禁使用预留字段

 

五.反范式化设计

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

 

为什么反范式化

1.减少表的关联数量

2.增加数据的读取效率

3、反范式化设计一定要适度

 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库物理设计(1)全文共2页,当前为第1页。数据库物理设计(1)全文共2页,当前为第1页。物理结构设计 数据库物理设计(1)全文共2页,当前为第1页。 数据库物理设计(1)全文共2页,当前为第1页。 数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的"合理"主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。 为了设计数据库物理结构,设计人员必须充分了解所用DBMS的内部特征;充分了解数据系统的实际应用环境,特别是数据应用处理的频率和响应时间的要求;充分了解外存储设备的特性。数据库物理结构设计大致包括:确定数据的存取方法、确定数据的存储结构。 物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。因此在确定数据库的存储结构和存取方法之前,对数据库系统所支持的事务要进行仔细分析,获得优化数据库物理设计的参数。 对于数据库查询事务,需要得到如下信息: l 要查询的关系。 l 查询条件(即选择条件)所涉及的属性。 l 连接条件所涉及的属性。 l 查询的投影属性。 对于数据更新事务,需要得到如下信息: l 要更新的关系。 l 每个关系上的更新操作的类型。 l 删除和修改操作所涉及的属性。 l 修改操作要更改的属性值。 上述这些信息是确定关系存取方法的依据。除此之外,还需要知道每个事务在各关系上运行的频率,某些事务可能具有严格的性能要求。例如,某个事务必须在20秒内结束。这种时间约束对于存取方法的选择有重大的影响。需要了解每个事务的时间约束。 值得注意的是,在进行数据库物理结构设计时,通常并不知道所有的事务,上述信息可能不完全。所以,以后可能需要修改根据上述信息设计物理结构,以适应新事务的要求。 1. 确定关系模型的存取方法 确定数据库的存取方法,就是确定建立哪些存储路径以实现快速存取数据库中的数据。现行的DBMS一般都提供了多种存取方法,如索引法、HASH法等。其中,最常用的是索引法。 数据库物理设计(1)全文共2页,当前为第2页。数据库物理设计(1)全文共2页,当前为第2页。数据库的索引类似书的目录。在书中,目录允许用户不必浏览全书就能迅速地找到所需要的位置。在数据库中,索引也允许应用程序迅速找到表中的数据,而不必扫描整个数据库。在书中,目录就是内容和相应页号的清单。在数据库中,索引就是表中数据和相应存储位置的列表。使用索引可以大大减少数据的查询时间。 数据库物理设计(1)全文共2页,当前为第2页。 数据库物理设计(1)全文共2页,当前为第2页。 但需要注意的是索引虽然能加速查询的速度,但是为数据库中的每张表都设置大量的索引并不是一个明智的做法。这是因为增加索引也有其不利的一面:首先,每个索引都将占用一定的存储空间,如果建立聚簇索引(会改变数据物理存储位置的一种索引),占用需要的空间就会更大;其次,当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的更新速度。 在创建索引的时候,一般遵循以下的一些经验性原则: l 在经常需要搜索的列上建立索引。 l 在主关键字上建立索引。 l 在经常用于连接的列上建立索引,即在外键上建立索引。 l 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。 l 在经常需要排序的列上建立索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询的时间。 l 在经常成为查询条件的列上建立索引。也就是说,在经常使用在WHERE子句中的列上面建立索引。 同样,对于某些列不应该创建索引。这时候应该考虑下面的指导原则: l 对于那些在查询中很少使用和参考的列不应该创建索引。因为既然这些列很少使用到,有索引并不能提高查询的速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。 l 对于那些只有很少值的列不应该建立索引。例如,人事表中的"性别"列,取值范围只有两项:"男"或"女"。若在其上建立索引,则平均起来,每个属性值对应一半的元组,用索引检索,并不能明显加快检索的速度。 时刻怀有一颗虔诚之心,乐于分享。知识才更有意义。 数据库物理设计(1)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值