开发者社区> 科技探索者> 正文

数据库设计系列8--创建并检查ER模型

简介:
+关注继续查看
数据设计中包含两个主要的阶段:逻辑数据库设计和物理数据库设计。在逻辑数据库设计阶段包含两个主要步骤:创建并检查ER模型,ER模型影射为表。下面主要介绍创建ER模型并检查表。补充一下:在逻辑设计之前有一个概念设计,这个阶段从创建企业使用的数据的概念数据模型开始,完全独立于所有的实现细节,将概念设计和逻辑设计结合起来便形成了逻辑数据库设计。
       创建并检查ER模型的目标是构建将由数据库支持的企业的数据需求的ER模型。每个ER模型包括:实体,关系,属性和属性域,主键和备用键,完整性约束。ER模型是由文档支持的、包括数据字典和ER图,他们在模型的开发过程中产生。开发过程的主要任务包括:      
1.         标示实体:标示需要的实体。构建ER数据模型的第一步就是定义用户感兴趣的主要对象。这些对象就是模型中的实体,标示实体的一种方法就是仔细研究用户的需求说明,从说明中可以定义提到的名词或者名词短语。标示实体的另一重方法就是查找那些有存在必要的对象,有时由于实体在用户的需求说明中提出的方式不同,因此标示实体是很困难的。更麻烦的是用户经常使用同义词和多义词。某一个对象是否是实体,关系或者属性并不是很明显的,例如婚姻。数据库设计者必须根据现实世界进行选择,并根据实际情况对事务进行分类,因此从用户提供的需求说明得到的一组实体可能不是唯一的,然而分析过程的不断重复必定会导致选择对完成系统需求来说已经够用的实体。数据库设计的主观性开始可能令人烦恼,但是遵循一定的方法是可以完成的,并且在有了一定的联系和经验后,设计变得容易多了。当标示实体时,应使用实体的名字对用户来说意义直观,在数据字典中记录实体的名字和描述,如果有可能记录希望每个实体出现的序号,如果一个实体有不同名字,这些名字被认为是同义词或者别名,而这些也应该记录在数据字典中。
2.         标示关系:目标是标示实体间存在的重要关系,标示完实体之后,下一步就是确立这些实体之间的关系,标示实体时,一种方法是在用户的需求说明中寻找名词,标示关系时,也可以利用需求说明的语法,一般地,关系由动词或者动词短语组成,如分公司有员工,员工被分配了汽车。事实上,用户的需求说明中记录了这些关系,说明他们对用户很重要,因此在模型中必然应该包含这些关系。在大多数情况下,关系都是二元的,换句话说,关系只存在两个相关的实体之间,但是也应该注意递归关系和三元关系,要确保在用户需求所名中的显式或者隐式的关系都被标示出来,原则上说,检查每一对具有潜在关系的实体应该是可能的,但对包含成百个实体的大系统来说这是一项令人望而生畏的任务,另一方面,不进行这样的检查是不明智的。在整个数据库设计的过程中,在任何需要的时候都使用ER建模,这样可以帮助构建想要的模型的图形描述。不同的人可以使用不同的ER模型符号。标示关系不仅要确认实体之间的联系,还需要确认关系上的多样性,检查关系中是否存在扇形陷阱或者深坑陷阱,最后要注意将生成的结果存档。
3.         标示实体和关系的有关属性:目标是为实体和关系标示属性。当我们在用户需求说明中标示完实体或关系之后,最简单的事情就是考虑那些信息是我们需要保存的,在用户的需求说明中应该有这个问题的答案,但是有时可能需要询问用户来明确需求,但是,他们所给的答案又包含了其他的概念,因此对于用户的回答必须仔细考虑。标示实体或者关系上的属性和标示实体相似,需要在说明文档中寻找名词,或者名词短语,当这个名词或名词短语是特性,标志,或前面定义的实体或关系的特征时就可以被标示成属性。
a)         简单属性/复合属性:标示属性是简单属性还是复合属性根据用户的需求来定义,比如对已姓名,可以分为姓和名两个字段,如果用户不需要单独访问性或者名,就可以把姓名综合起来作为单值属性,如果用户需要分别访问姓或者名,那么就应该把地址属性描述为由必须的简单属性所组成的复合属性。
b)        单值/多值属性:大多数的属性是单值的,但是也有例外是多值的,比如一个公司的电话号码,如果有多个号码就可以标示为多值属性,把公司的电话号码作为一个独立的实体是对多值属性的一个替换方案。
c)        派生属性:如果一个属性可以有其它的属性得到,则该属性为派生属性,最常见的就是年龄可以根据出生日期来计算。如果一个属性是派生的属性,也必须在模型中显示出来,为了标示是派生属性,需要在属性前面添加/以示区别。
4.         确定属性域:这步骤中的目标就是确定ER模型中的属性域,域是一组值的集合,一个或者多个属性可以从中选择他们的值。一个开发完备的数据模型为模型中的每个属性指定域,其中包括概述性的允许值几何,该属性大小和格式。
5.         确定候选键,主键和备用键:这个步骤地作用是为每个实体标示候选键,如果有多个候选键,则选择其中的一个作为主键,并标示其他的备用键。一定要确保选择出来的主键不能为空,从候选键中标示主键时,应该遵循如下的指南来进行选择
a)         具有最少的一组属性的候选键,
b)        值很少变化的候选键,
c)        在未来不会失去唯一性的候选键
d)        字符最少的候选键,
e)         最大值最小的候选键
f)         从用户的观点来看最易于使用的候选键,
标示主键的郭崇中要注意实体是强实体还是弱实体,如果可以给一个实体标示主键,则该实体为强实体,否则为弱实体。标示完实体主键之后需要将实体的相关信息存档。
6.         特化/泛化实体:在这个过程中可以使用泛化过程来继续逻辑模型的开发。超类和子类的建模为数据模型添加了更多的信息。但是也使得模型更加复杂。
7.         检查模型的数据冗余:在ER模型中检查冗余的情况。在这个步骤中主要有三个活动,包括:重新检查一对一的关系,删除冗余关系,当访问冗余时考虑时间尺度。
8.         检查模型是否支持用户事务:对于每一个事务,都需要进行相应的检查。使用ER模型和数据字典,尝试手工完成操作,如果可以以这种方式解决所有的事务,就已经完成了ER模型是否支持用户事务的检查,但是如果不能手工地操作一个事务,则数据模型一定存在问题。
9.         与用户一起检查模型:与用户一起检查模型可以确保用此模型时真实的表达了企业的需求。
本文转自凌辉博客51CTO博客,原文链接http://blog.51cto.com/tianli/57894如需转载请自行联系原作者

lili00okok

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
loadrunner 场景设计-手工场景方案(Schedule)设计
loadrunner 场景设计-手工场景方案(Schedule)设计
14 0
jira学习案例17-hook+ts实现useArray小作业
jira学习案例17-hook+ts实现useArray小作业
12 0
ER图与数据库设计|学习笔记
快速学习ER图与数据库设计
195 0
数据库 ER 图介绍|学习笔记
快速学习数据库 ER 图介绍
191 0
hook+ts业务开发思路3-创建数据-完成数据待办项
hook+ts业务开发思路3-创建数据-完成数据待办项
18 0
ts重点学习92-分布式条件类型笔记
ts重点学习92-分布式条件类型笔记
23 0
ts重点学习91-分布式条件类型
ts重点学习91-分布式条件类型
29 0
基于 Scheduled SQL 对 VPC FlowLog 实现细粒度时间窗口分析
针对VPC FlowLog的五元组和捕获窗口信息,在分析时使用不同时间窗口精度,可能得到不一样的流量特征,本文介绍一种方法将原始采集日志的时间窗口做拆分,之后重新聚合为新的日志做分析,达到更细粒度的分析效果。
610 0
vs2013在使用ef6时,创建模型向导过程中,四种模型方式缺少2种
下载eftool,并安装 https://www.microsoft.com/en-us/download/confirmation.aspx?id=40762 博客园大道至简 http://www.cnblogs.com/jams742003/ 转载请注明:博客园
965 0
+关注
科技探索者
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
开源广进-用Service Catalog构造K8S服务能力
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载