- MySQL数据库原理及应用(第2版)(微课版)
- 武洪萍 孟秀锦 孙灿
- 3802字
- 2024-10-30 02:56:31
任务2-3 概念结构设计
【任务分析】
设计人员完成了数据库设计的第一步,收集到了与学生信息管理系统相关的数据,下一步的工作是分析收集到的学生信息管理的数据,找出它们之间的联系,并用E-R图表示。
【课堂任务】
理解E-R图的设计方法。
● 设计局部E-R模型
● 设计全局E-R模型
● 消除合并局部E-R图存在的冲突
概念结构设计是将需求分析得到的用户需求抽象为信息结构即概念模型的过程,它是整个数据库设计的关键。只有将需求分析阶段得到的系统应用需求抽象为信息世界的结构,才能更好、更准确地转化为机器世界中的数据模型,并用适当的DBMS实现这些需求。
(一)概念结构设计的方法和步骤
1. 概念结构设计的方法
概念结构设计的方法通常有以下4种。
(1)自顶向下。首先定义全局概念结构的框架,然后逐步细化。
(2)自底向上。首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。
(3)逐步扩张。首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。
(4)混合策略。将自顶向下和自底向上的方法相结合,用自顶向下策略设计一个全局概念结构的框架,以它为框架自底向上设计各局部概念结构。
其中最常采用的策略是混合策略,即自顶向下进行需求分析,然后再自底向上设计概念结构,其方法如图2.2所示。

图2.2 自顶向下分析需求与自底向上设计概念结构
2. 概念结构设计的步骤
按照图2.2所示的自顶向下分析需求与自底向上设计概念结构的方法,概念结构的设计可分为以下两步。
(1)进行数据抽象,设计局部E-R模型。
(2)集成各局部E-R模型,形成全局E-R模型,其步骤如图2.3所示。

图2.3 概念结构设计的步骤
(二)局部E-R模型设计

微课2-2:局部E-R模型设计
设计局部E-R图首先需要根据系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,让这组图中的每一部分对应一个局部应用,然后以这一层次的数据流图为出发点,设计分E-R图。将各局部应用涉及的数据分别从数据字典中抽取出来,参照数据流图,确定各局部应用中的实体、实体的属性、标识实体的码、实体之间的联系及其类型(1∶1,1∶n,m∶n)。
实际上实体和属性是相对而言的。同一事物在一种应用环境中作为“属性”,在另一种应用环境中就有可能作为“实体”。
例如,如图2.4所示,大学中的“系”,在某种应用环境中,只是作为“学生”实体的一个属性,表明一个学生属于哪个系;而在另一种环境中,由于需要考虑一个系的系主任、教师人数、学生人数、办公地点等,所以它需要作为实体。

图2.4 “系”由属性上升为实体的示意图
因此,为了解决这个问题,应当遵循两条基本准则。
(1)属性不能再具有需要描述的性质,即属性必须是不可分的数据项,不能再由另一些属性组成。
(2)属性不能与其他实体具有联系。联系只发生在实体之间。
符合上述两条特性的事物一般作为属性对待。为了简化E-R图的处理,现实世界中的事物凡能够作为属性对待的,应尽量作为属性。
【例2.1】 设有如下实体。
学生:学号、系名称、姓名、性别、年龄、选修课程名、平均成绩
课程:编号、课程名、开课单位、任课教师号
教师:教师号、姓名、性别、职称、讲授课程编号
单位:单位名称、电话、教师号、教师姓名
上述实体中存在如下联系。
① 一个学生可选修多门课程,一门课程可为多个学生选修。
② 一个教师可讲授多门课程,一门课程可为多个教师讲授。
③ 一个系可有多个教师,一个教师只能属于一个系。
根据上述约定,可以得到学生选课局部E-R图(见图2.5)和教师授课局部E-R图(见图2.6)。

图2.5 学生选课局部E-R图

图2.6 教师授课局部E-R图
(三)全局E-R模型设计
1. 局部E-R图的集成方法
各个局部E-R图建立好后,还需要将它们合并,集成为一个整体的概念数据结构,即全局E-R图。局部E-R图的集成有两种方法。
(1)多元集成法,也叫作一次集成,是指一次性将多个局部E-R图合并为一个全局E-R图,如图2.7(a)所示。
(2)二元集成法,也叫作逐步集成,首先集成两个重要的局部E-R图,然后用累加的方法逐步将一个新的E-R图集成进来,如图2.7(b)所示。

图2.7 局部E-R图集成的两种方法
2. 局部E-R图集成步骤
在实际应用中,可以根据系统复杂性选择这两种方案。如果局部图比较简单,可以采用一次集成法。在一般情况下,采用逐步集成法,即每次只综合两个图,这样可降低难度。无论使用哪一种方法,E-R图集成均分为两个步骤。第1步为合并,消除各局部E-R图之间的冲突,生成初步E-R图;第2步为优化,消除不必要的冗余,生成基本E-R图。
(1)合并分E-R图,生成初步E-R图。这个步骤将所有的局部E-R图综合成全局概念结构。全局概念结构不仅要支持所有的局部E-R模型,而且必须合理地表示一个完整、一致的数据库概念结构。
由于各个局部应用面向的问题不同,并且通常由不同的设计人员设计局部E-R图,因此,各局部E-R图不可避免地会有许多不一致的地方,通常把这种现象称为冲突。
因此当合并局部E-R图时,并不是简单地将各个E-R图画到一起,而是必须消除各个局部E-R图中的不一致,使合并后的全局概念结构不仅支持所有的局部E-R模型,而且必须是一个能为全系统中所有用户共同理解和接受的统一的概念模型。合并局部E-R图的关键就是合理消除各局部E-R图中的冲突。
E-R图中的冲突有3种:属性冲突、命名冲突和结构冲突。
① 属性冲突。属性冲突又分为属性值域冲突和属性的取值单位冲突。
a. 属性值域冲突。即属性值的类型、取值范围或取值集合不同。例如,学生的学号通常用数字表示,这样有些部门就将其定义为数值型,而有些部门则将其定义为字符型。
b. 属性的取值单位冲突。比如零件的重量,有的以千克为单位,有的以公斤为单位,有的则以克为单位。
属性冲突属于用户业务上的约定,必须与用户协商后解决。
② 命名冲突。命名不一致可能发生在实体名、属性名或联系名之间,其中属性的命名冲突最为常见。一般表现为同名异义或异名同义。
a. 同名异义,即同一名字的对象在不同的局部应用中具有不同的意义。例如,“单位”在某些部门表示为人员所在的部门,而在某些部门可能表示物品的重量、长度等属性。
b. 异名同义,即同一意义的对象在不同的局部应用中具有不同的名称。例如,对于“房间”这个名称,在教务管理部门中对应教室,而在后勤管理部门中对应学生宿舍。
命名冲突的解决方法同属性冲突相同,需要与各部门协商、讨论后解决。
③ 结构冲突。
a. 同一对象在不同应用中有不同的抽象,可能为实体,也可能为属性。例如,教师的职称在某一局部应用中被当作实体,而在另一局部应用中被当作属性。
在解决这类冲突时,就是使同一对象在不同应用中具有相同的抽象,或把实体转换为属性,或把属性转换为实体。
b. 同一实体在不同局部应用中的属性组成不同,可能是属性个数或属性的排列次序不同。
解决办法是,合并后的实体的属性组成为各局部E-R图中的同名实体属性的并集,然后再适当调整属性的排列次序。
c. 实体之间的联系在不同局部应用中呈现不同的类型。例如,局部应用X中E1与E2可能是一对一联系,而在另一局部应用Y中可能是一对多或多对多联系,也可能是在E1、E2、E3三者之间有联系。
解决方法:根据应用语义对实体联系的类型进行综合或调整。
下面以例2.1中已画出的两个局部E-R图(见图2.5、图2.6)为例,来说明如何消除各局部E-R图之间的冲突,并合并局部E-R模型,从而生成初步E-R图。
首先,这两个局部E-R图中存在命名冲突,学生选课局部E-R图中的实体“系”与教师授课局部E-R图中的实体“单位”都是指系,即所谓异名同义,合并后统一改为“系”,这样属性“名称”和“单位名称”即可统一为“系名”。
其次,还存在结构冲突,实体“系”和实体“单位”在两个局部E-R图中的属性组成不同,合并后这两个实体的属性组成为各局部E-R图中的同名实体属性的并集。解决上述冲突后,合并两个局部E-R图,就能生成初步的全局E-R图。
(2)消除不必要的冗余,生成基本E-R图。在初步E-R图中,可能存在冗余的数据和冗余的实体之间的联系。冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他的联系导出的联系。冗余的存在容易破坏数据库的完整性,给数据库的维护增加困难,应该消除。当然,不是所有的冗余数据和冗余联系都必须消除,有时为了提高某些应用的效率,不得不以冗余信息作为代价。设计数据库概念模型时,哪些冗余信息必须消除,哪些冗余信息允许存在,需要根据用户的整体需求来确定。把消除了冗余的初步E-R图称为基本E-R图。
通常采用分析的方法消除冗余。数据字典是分析冗余数据的依据,还可以通过数据流图分析出冗余的联系。
在图2.5和图2.6所示的初步E-R图中,因为“课程”实体中的属性“教师号”可由“讲授”这个教师与课程之间的联系导出,而学生的平均成绩可由“选修”联系中的属性“成绩”计算出来,所以“课程”实体中的“教师号”与“学生”实体中的“平均成绩”均属于冗余数据。
另外,因为“系”和“课程”之间的联系“开课”,可以由“系”和“教师”之间的“属于”联系与“教师”和“课程”之间的“讲授”联系推导出来,所以“开课”属于冗余联系。
这样,图2.5和图2.6所示的初步E-R图在消除冗余数据和冗余联系后,便可得到基本的E-R模型,如图2.8所示。

图2.8 优化后的基本E-R图
最终得到的基本E-R模型是企业的概念模型,它代表了用户的数据要求,是沟通“要求”和“设计”的桥梁,它决定数据库的总体逻辑结构,是成功创建数据库的关键。如果设计不好,就不能充分发挥数据库的功能,无法满足用户的处理要求。
提示:用户和数据库人员必须反复讨论这一模型,在用户确认这一模型已正确无误地反映了他们的要求之后,才能进入下一阶段的设计工作。