数据模型设计

 

数据:是符号。例如 张三

模型:现实世界事与物特征的抽象与模拟。如飞机模型、空气动力模型。

数据模型:通过对现实世界的事与物主要特征的分析、抽象,为信息系统的实施提供数据存取的数据结构以及相应的约束。 数据模型的要素由操作、数据结构以及约束。通常情况下我们在数据模型设计的时候考虑最多的是数据结构而忽视了其他两个要素。

根据数据模型的应用层次可以分为概念数据模型模型(概念模型)、逻辑数据模型(数据模型)、以及物理数据模型(物理模型)。

概念模型:从业务的角度来考虑问题,主要用来描述事与物的概念化结构,其用途是统一业务概念,作为业务人员和技术人员之间沟通的桥梁。其描述方法有ER图、Merise图、Barker图等。在建立概念模型的过程中主要考虑的是现实世界中的事与物以及他们之间的关系而不用关注事与物的具体属性。

逻辑数据模型:从数据库的角度来考虑问题,在概念模型的基础上对事与物属性的细化以及对象整合。其描述方法有ER图。在这个层面数据模型可以分为层次、网状、关系模型。

物理模型:面向具体的物理计算环境。

 设计数据模型主要考虑的因素:

1:是否满足现有的业务需求。

2:是否易于应对未来的可能的业务变更。好的扩展性、很强的灵活性。

3:是否高效。对开发人员来是否简单高效,运行是否高效。

 设计数据模型的感悟:

1:关于扩展性: 可以通过横表转纵表的方式。 视图可以为开发人员提供一个接口屏蔽底层具体实现的复杂性同时提高系统的扩展性。

2:关于数据源 :要有元数据的概念同样的数据尽量在一个源头去取,这对数据的维护以及数据一致性都很有好处。

3:关于抽象: 抽象是我们分析问题解决问题非常重要的手段,抽象能力的高低充分体现了数据模型设计人员的水平。        

4:关于动静分离: 动静是相对的没有绝对的动与静。在实体属性的选取、表空间等方面考虑动态数据与静态数据分离。 用一个例子来说明这个问题吧。 在电子商务系统中从灵活的角度来看后端管理系统会涉及多个表,但是对于前端展现来说如果从多个表获取数据的话那么在高并发的情况下会严重的影响性能。于是乎就有了发布这个环节。发布的目的除了对信息进行审核外,还把相关的信息发布到一个表或者缓存中再或者生成静态页面,如果使用oralce的话还可以使用物化视图。

5:关于数据字典: 要重视数据字典这对开发人员理解数据模型的设计以及以后的维护都非常重要。
6:如何进行数据模型设计

【01】首先是要了解业务然后建立概念模型,确定实体以及实体关系。

【02】在概念模型的基础上生成逻辑模型,确定实体属性,标准化数据(消除多值字段达到第一范式;消除部分依赖达到第二范式;消除传递依赖达到第三范式)。

【03】模型验证:通过具体的业务来验证模型是否能满足要求。

【04】在逻辑模型的基础上生产物理模型。

7:三少: 整个模型中表应该尽量的少;在一个表中字段应该尽量的少同时复合主键字段应尽量的少
8:如果在大数据量或者高并发的情况下,要充分考虑数据库的压力,事先要考虑哪些表可能是热表。要尽量的降低模块的耦合。如果使用的是oracle RAC 的话要考虑一下多实例竞争的问题,不同的模块访问不同的实例。
9:一定要做压力测试、要做充分的压力测试,要不上线后会死的很惨,移动总部的一个web项目应为没有做充分的压力测试,导致上线后不的不挂维护页面,动用了n多的资源去解决问题。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值