数据库设计系列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
相关文章
|
15天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
|
1月前
|
机器学习/深度学习 存储 安全
数据库模型:层次模型、网状模型、关系模型
数据库模型:层次模型、网状模型、关系模型
|
5月前
|
SQL Oracle 关系型数据库
SQL Developer生成Oracle数据库的关系模型(ER图)
SQL Developer生成Oracle数据库的关系模型(ER图)
173 0
|
7月前
|
存储 关系型数据库 数据库
Django创建应用、ORM的进阶使用及模型类数据库迁移1
Django创建应用、ORM的进阶使用及模型类数据库迁移1
74 0
|
7月前
|
存储 数据可视化 数据库
Django创建应用、ORM的进阶使用及模型类数据库迁移3
Django创建应用、ORM的进阶使用及模型类数据库迁移3
52 0
|
7月前
|
关系型数据库 MySQL 数据库
Django创建应用、ORM的进阶使用及模型类数据库迁移2
Django创建应用、ORM的进阶使用及模型类数据库迁移2
46 0
|
22天前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之OAT添加服务器预检查的时候报错如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
24天前
|
存储 SQL 缓存
【软件设计师备考 专题 】数据库模型(概念模式、外模式、内模式)
【软件设计师备考 专题 】数据库模型(概念模式、外模式、内模式)
65 0
|
27天前
|
监控 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 检查和创建磁盘配额数据库 quotacheck命令使用教程
【Shell 命令集合 磁盘管理 】Linux 检查和创建磁盘配额数据库 quotacheck命令使用教程
29 0
|
1月前
|
SQL 机器学习/深度学习 存储
数据库设计革命:逻辑模型的演变与面向对象的突破
数据库设计革命:逻辑模型的演变与面向对象的突破
13 1