概念模型是数据库系统的核心和基础。由于各个机器上实现的DBMS软件都是基于某种数据模型的,但是在具体机器上实现的模型都有许多严格的限制。而现实应用环境是复杂多变的,如果把实现世界中的事物直接转换为机器————中的对象,就非常不方便。因此,人们研究把现实世界中的事物抽象为不依赖与具体机器的信息结构,又接近人们的思维,并具有丰富语义的概念模型,然后再把概念模型转换为具体的机器上DBMS支持的数据模型。概念模型的描述工具通常是使用E-R模型图。该模型不依赖于具体的硬件环境和DBMS。
概念结构是对现实世界的一种抽象。所谓抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确的加以描述,这些概念组成了某种模型。通过概念设计得到的概念模型是从现实世界的角度对所要解决的问题的描述,不依赖于具体的硬件环境和DBMS。
在需求分析和逻辑设计之间增加概念设计阶段,可以使设计人员仅从用户的角度看待数据及处理要求和约束。
1对数据库概念模型的要求
表达概念设计的结果称为概念模型,对概念模型有以下要求:
(1)有丰富的语义表达能力,能表达用户的各种需求。
(2)易于交流和理解,从而可以用它和不熟悉计算机的用户交换意见。
(3)要易于更改。当应用环境和应用要求改变时,概念模型要能很容易的修改和扩充以反映这种变化。
(4)易于向各种数据模型转换。
按照上述要求,传统的数据模型(网状、层次和关系模型)都不适合作概念模型。在数据库的概念设计中,通常采用E-R数据模型来表示数据库的概念结构。E-R数据模型将现实世界的信息结构统一用属性、实体以及它们之间的联系来描述。注释:
通过概念设计得到的概念模型是从现实世界的角度对所要解决的问题的描述,不依赖于具体的硬件环境和DBMS。把用户的信息要求统一到一个整体概念结构中,此结构能表达用户的要求,且独立于任何DBMS软件和硬件。
在需求分析和逻辑设计之间增加概念设计阶段,可以使设计人员仅从用户的角度看待数据及处理要求和约束。
2数据库概念模型的设计方法
概念设计阶段,一般使用语义数据模型描述概念模型。通常是使用E-R模型图作为概念设计的描述工具进行设计。用E-R模型图进行概念设计可以采用如下两种方法:
(1)集中式模式设计法(centralized schema designapproach):
首先设计一个全局概念数据模型,再根据全局数据模式为各个用户组或应用定义外模式。
(2)视图集成法(view integration approach):
以个部分的需求说明为基础,分别设计各自的局部模式,这些局部模式相当于各部分的视图,然后再以这些视图为基础,集成为一个全部模式。
视图是按照某个用户组、应用或部门的需求说明,用E-R数据模型设计的局部模式。
现在的关系数据库设计通常采用视图集成法。
3采用E-R方法的概念模型设计步骤
概念结构设计的第一步就是对需求分析阶段收集到的数据进行分类、组织(聚集),形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(1:1,1:N,M:N),设计分E-R图。
采用E-R方法进行概念设计,可分为三步进行:
(1)局部E-R模式设计;
(2)全局E-R模式设计;
(3)全局E-R模式的优化和评审。 (1) 局部E-R模式设计;
局部E-R模式设计的过程如图5-17所示。[attach]1276[/attach]
设计分E-R模式的具体做法是:
·先选择某个局部应用,根据某个系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,作为设计分析E-R图的出发点。
由于高层的数据流图只能反映系统的概貌,而中层的数据流图能较好的反映系统中各局部应用的子系统组成,因此人们往往以中层数据流图作为设计分E-R图的依据。
·逐一设计分E-R图
选择好局部应用之后,就要对每个局部应用逐一设计分E-R图,亦称局部E-R图。
在前面选好的某一层次的数据流图中,每个局部应用都对应了一组数据流图,局部应用涉及的数据都已经收集在数据字典中了。现在就是要将这些数据从数据字典中抽取出来,参照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型。
事实上,在现实世界中具体的应用环境常常对实体和属性已经作了大体的自然的划分。在数据字典中,"数据结构"、"数据流"和"数据存储"都是若干属性有意义的聚合,就体现了这种划分。可以先从这些内容出发定义E-R图,然后再进行必要的调整。在调整中遵循的一条原则是:
为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待。
注释:实体与属性之间并没有形式上可以截然划分的界限,但可以给出两条准则:
(1)作为"属性",不能再具有需要描述的性质。"属性"必须是不可分的数据项,不能包含其他属性。
(2)"属性"不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系。 (2)全局E-R模式设计
各子系统的分E-R图设计好以后,下一步就是要将所有的分E-R图综合成一个系统的总E-R图。全局E-R模式的集成过程如图5-18所示。[attach]1277[/attach]
(3)全局E-R模式的优化和评审:进行相关实体类型的合并,以减少实体类型的个数;消除实体中的冗余属性;消除冗余的联系类型。
4视图设计示例
例1:教务处关于学生的局部视图如图5-20。[attach]1278[/attach]
例2:研究生院关于学生的局部视图.如图5-21。[attach]1279[/attach]
5视图集成
各子系统的分E-R图设计好以后,下一步就是要将所有的分E-R图综合成一个系统的总E-R图。一般说,视图集成可以有两种方式:
●多个分E-R图一次集成。
●逐步集成,用累加的方式一次集成两个分E-R图。
无论采用哪种方式,每次集成局部E-R图都需要分两步骤:
(1)视图合并
视图合并要解决各分E-R图之间的冲突,将各分E-R图合并起来生成初步E-R图。
消除各分E-R图的冲突是合并分E-R图的主要工作与关键所在。各分E-R图之间的冲突主要有三类:命名冲突、属性冲突、结构冲突。
·命名冲突
(a)同名异义冲突。例如:"学生"和"课程"这两个实体名在图5-20和图5-21中的含义是不同的,即它们的描述属性各不相同,分别表示不同的实体类型。
(b)异名同义冲突。例如:图5-20中的"何时入学"和图5-21中的"入学时间"是异名同义,它们都表示学生的入学时间,用了不同的属性名。
·属性冲突
(a)属性域冲突。例:学号在一个视图中可能当作字符串,在另一个视图中可能当作整数。
(b)属性取值单位冲突。
·结构冲突
(a)同一对象在一个实体中可能作为实体,在另一个视图中可能作为属性或联系。
(b)同一实体在不同的分E-R图中所包含的属性个数和属性排列次序不完全相同。
(c)不同的视图可能有不同的约束。例如,对?quot;选课"这个联系,大学生和研究生对选课的最少门数和最多门数要求可能不一样。
(2)修改和重构生成基本E-R图
修改和重构消除不必要的冗余,生成基本E-R图。
冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其它联系导出的联系。
消除了冗余后的初步E-R图称为基本E-R图。
例如,在下面的图5-22中,Q3可由Q1、Q2导出,Q4可由Q5导出,产品和材料之间的使用联系是冗余联系。[attach]1280[/attach]
(3)视图集成的要求视图集成要尽可能合并对应的部分,保留特殊的部分,删除冗余部分,必要时对模式进行适当的修改,力求使模式简明清晰。
视图集成后,要对整体概念结构进行验证:
·整体概念结构必须具有一致性,不存在矛盾;
·整体概念结构要反映单个视图的结构,包括实体及实体之间的联系;
·整体概念结构必须满足需求分析阶段确定的所有要求。如果两个实体在不同的视图中存在着不同的联系,集成时,所有联系都要保留。例如,维修部门视图中的职工和设备的保养联系以及生产部门视图中的职工与设备的使用联系,如图5-23所示。[attach]1281[/attach]
另一种形式的E-R图集成如图5-24,把职工分为保养工和使用工。[attach]1282[/attach]
各个局部应用所面向的问题不同,且通常是由不同的设计人员进行局部试图设计,这就导致各个分E-R图之间必定会存在许多不一致的地方,称之为冲突。因此合并分E-R图时并不能简单的将各个分E-R图画到一起,而是必须着力消除各个分E-R图中的不一致,已形成一个能为全系统中所有用户共同理解和接受的统一的概念模型。合理消除各分E-R图中的冲突是合并分E-R图的主要工作与关键所在。
6.数据库概念设计总结
·用E-R数据模型进行概念设计,首先必须根据需求说明,确认实体、联系和属性。
·采用E-R方法进行数据库的概念设计,可以分成三步进行:首先设计局部E-R图;然后合并各局部E-R图,并解决可能存在的冲突,得到初步E-R图;最后修改和重构初步E-R图,消除其中的冗余部分,得到最终的全局E-R图,即概念模式。o设计全局E-R模式的目的不在于把若干局部E-R模式形式上合并为一个E-R模式,而在于消除冲突使之成为能够被全系统总所有用户共同理解和接受的统一的概念模型。
在需求分析和逻辑设计之间增加概念设计阶段,使设计人员仅从用户角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。这样做有三个好处:
(1)数据库设计各阶段的任务相对单一化,设计复杂程度得到降低,便于组织管理。
(2)概念模式不受特定DBMS限制,也独立于存储安排,因而比逻辑设计得到的模式更为稳定。
(3)概念模式不含具体的DBMS所附加的技术细节,更容易为用户所理解,因而能准确反映用户的信息需求。
在初步E-R图中,可能存在一些冗余的数据和实体间冗余的联系。所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。冗余的数据和冗余联系容易破坏数据库的完整性,为数据库的维护增加困难,应当予以消除。消除了冗余后的初步E-R图称为基本E-R图。
但并不是所有的冗余数据与冗余联系都必须加以消除,有时为了提高效率,不得不以冗余信息作为代价。因此在设计数据库概念结构时,那些冗余信息必须消除,那些冗余信息允许存在,需要根据用户的整体需求来确定。如果人为地保留了一些冗余数据,则应把数据字典中数据关联的说明作为完整性约束条件。