2-2-5

来源:百度文库 编辑:神马文学网 时间:2024/04/29 07:10:35


2.2.1 ER模型的基本元素
1.实体
(1)实体(entity)是一个数据对象,指应用中可以区别的客观存在的事物。
(2)实体集(entity set)是指同一类实体构成的集合。
(3)实体类型(entity type)是对实体集中实体的定义。
(4)在不引起混淆的情况下,我们一般将实体、实体集、实体类型等概念统称为实体。
(5)在ER模型中,实体用方框表示,方框内注明实体的命名。
2.联系
(1)联系(relationship)表示一个或多个实体之间的关联关系。
(2)联系集(relationship set)是指同一类联系构成的集合。
(3)联系类型(relationship type)是对联系集中联系的定义。
(4)同实体一样,我们一般将联系、联系集、联系类型等统称为联系。
(5)联系是实体之间的一种行为,一般用动名词(汉语动词)来命名联系,譬如“工作”、“参加”、“属于”、“入库”、“进库”等等。
(6)在ER图中,联系用菱形框表示,并用线段将其与相关的实体连接起来。
(7)实体关联示意图

3.属性
(1)实体的某一特性称为属性(attribute)。
(2)在一个实体中,能够惟一标识实体的属性或属性集称为“实体标识符”。
(3)如:职工有工号、姓名、性别、年龄等属性。其中工号为实体标识符。
(4)但一个实体只有一个标识符,没有候选标识符的概念。实体标识符有时也称为实体的主键。
(5)在ER图中,属性用椭圆形框表示,加下划线的属性为标识符。
(6)属性域是属性的可能取值范围,也称为属性的值域。
(7)联系也会有属性,用于描述联系的特征,如参加工作时间、入库数量等。但联系本身没有标识符。 2.2.2 属性的分类
1.简单属性和复合属性
(1)根据属性类别可分为简单属性(simple attribute)和复合属性(composite attribute)。
(2)简单属性是不可再分割的属性。譬如,性别和年龄都是简单属性。
(3)复合属性是可再分解为其他属性的属性(即属性可嵌套)。譬如,地址属性可分解为:邮政编码、省(市)名、区名、街道四个子属性,街道又可分解为路名、门牌号码两个子属性。
(4)复合属性形成了一个属性的层次结构

2.单值属性和多值属性
(1)根据属性的取值特点又可分为单值属性(single-valued attribute)和多值属性(multivalued attribute)。
(2)单值属性指的是同一实体的属性只能取一个值。譬如,同一个学生只能具有一个年龄,所以年龄属性是一个单值属性。
(3)多值属性指同一实体的某些属性可能取多个值。譬如,一个人的学位是一个多值属性(学士,硕士和博士);一种零件可能有多种销售价格(经销、代销,批发和零售)。
(4)多值属性用双线椭圆形表示

(5)多值属性的两种变换方法
   ①将原来的多值属性用几个新的单值属性来表示
   a.在零件供应数据库中,销售价格可分解为4个单值属性:经销价格,代销价格,批发价格和零售价格。
   b.多值属性的变换。

   ②将原来的多值属性用一个新的实体类型表示
   a.这个新实体类型和原来的实体类型之间是1:N联系。
   b.这个新实体依赖于原实体而存在,我们称之为弱实体。
   c.在零件供应数据库中,可以增加一个销售价格弱实体,它有两个属性:销售性质和销售价格。
   d.多值属性的变换。

3.存储属性和派生属性
(1)有时候,两个(或两个以上)属性值是相关的。
(2)此时可从其他属性值推导出值的属性,称为派生属性(derived attribute)。派生属性的值不必存储在数据库内,而其他需要存储值的属性称为存储属性(stored attribute)。
(3)例如在职工实体中,实发工资可从基本工资、奖金、房租等属性推导出来。
(4)派生属性的值不仅可以从其他属性导出,有时也可以从其它有关的实体导出。
(5)派生属性用虚线椭圆型与实体相连

4.允许为空值的属性
(1)当实体在某个属性上没有值时应使用空值(null value)。
(2)在数据库中,空值是很难处理的一种值。 2.2.3 联系的设计
1.联系的元数
(1)一个联系涉及到的实体集个数,称为该联系的元数或度数(degree);
(2)同一个实体集内部实体之间的联系,称为一元联系,也称为递归联系;
(3)两个不同实体集、实体之间的联系,称为二元联系;
(4)三个不同实体集实体之间的联系,称为三元联系。
2.联系类型的约束
(1)基数约束
   ①实体集E1和E2之间有二元联系,则参与一个联系中的实体数目称为映射基数(mapping cardinalities)。
   ②对于二元联系类型,可能的映射基数有1:1,1:N,M:N三种
   ③二元联系的1:1、1:N和M:N三种情况
   a.教育系统中学校与校长的1:1联系

   b.学校中系与教师间的联系是1:N联系

   c.学生与课程间的联系是M:N

   ④一元联系映射基数的三种方式
   a.运动员的名次排定(1:1联系)

   b.职工之间的上下级联系是1:N联系

   c.工厂的零件之间存在着组合关系(m:n联系)

   ⑤商店、仓库、商品之间的进货联系(三元联系中的m:n:p联系)

   ⑥映射基数范围
   a.对映射基数还要作出更精确的描述,即对参与联系的实体数目指明相关的最小映射基数min和最大映射基数max,用范围“min..max”的方式表示。
   b.譬如“1..*”表示参与联系的实体至少为1个,上界没有限制,即“*”表示“∞”。
   c.例子:教师和课程之间的映射基数。

     ·如果进一步规定,每位教师可讲授3门课,也可只搞研究而不教课;每门课程必须有一位教师上课。也就是,教师的基数是(0,3),课程的基数是(1,1)。
   d.例子:学生和课程之间的映射基数。

     ·学校里规定学生每学期至少选修1门课程,最多选修6门课程;
     ·每门课程至多有50人选修,最少可以没人选修。
(2)参与约束
   ①如果实体集E中的每个实体都参与联系集R的至少一个联系中,我们称实体集E“完全参与”联系集R。
   ②如果实体集E中只有部分实体参与联系集R的联系中,我们称实体集E“部分参与”联系集R。
   ③在ER图中表示时,全部参与用双线边表示,部分参与用单线边表示。
   ④一般,为了简化,很少在ER图上考虑参与约束,联系全部用单线边表示。 2.2.4 ER模型的操作
1.实体集的分裂
(1)分裂方式有水平分裂和垂直分裂两种。
(2)把教师分裂成男教师与女教师两个实体类型,这是水平分裂。
(3)也可把教师中经常变化的属性组成一个实体类型。而把固定不变的属性组成另一个实体类型,这是垂直分裂。

(4)但应注意,在垂直分裂中,键必须在分裂后的诸实体类型中出现。
2.联系类型的分裂
(1)联系类型也可分裂。
(2)联系类型的分裂实例。

3.ER模型的合并
(1)合并是分裂操作的逆过程。
(2)但必须注意,合并的联系类型必须是定义在相同的实体类型组合中。 2.2.5 采用ER模型的数据库概念设计步骤
1.设计局部ER模型
(1)确定局部结构范围
   ①划分的两种方式:
   a.一种是依据系统的当前用户进行自然划分。
     ·例如,对一个企业的综合数据库,用户有企业决策集团、销售部门、生产部门、技术部门和供应部门等,各部门对信息内容和处理的要求明显不同。
     ·因此,应为他们分别设计各自的局部ER模型。
   b.另一种是按用户要求数据库提供的服务归纳成几类,使每一类应用访问的数据显著地不同于其它类,然后为每类应用设计一个局部ER模型。
   ②局部结构范围的确定要考虑下述因素:
   a.范围的划分要自然,易于管理。
   b.范围之间的界面要清晰,相互影响要小。
   c.范围的大小要适度。
     ·太小了,会造成局部结构过多,设计过程繁琐,综合困难。
     ·太大了,则容易造成内部结构复杂,不便分析。
(2)定义实体
   ①每一个局部结构都包括一些实体类型,实体定义的任务就是从信息需求和局部范围定义出发,确定每一个实体类型的属性和键。
   ②划分实体、属性和联系的三条依据。
   a.采用人们习惯的划分。
   b.避免冗余,在一个局部结构中,对一个对象只取一种抽象形式,不要重复。
   c.依据用户的信息处理需求。
   ③实体类型确定之后,它的属性也随之确定。
   ④为一个实体类型命名并确定其键也是很重要的工作。
   a.命名应反映实体的语义性质,在一个局部结构中应是唯一的。
   b.键可以是单个属性,也可以是属性的组合。
(3)定义联系
   ①确定联系。
   a.对局部结构中任意两个实体类型,依据需求分析的结果,考察是否存在联系。
   b.若有联系,进一步确定是1:N,M:N,还是1:1等。
   c.还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系。
   ②防止出现冗余的联系。
   a.即可从其他联系导出的联系。
   b.如果存在,要尽可能地识别并消除这些冗余联系,以免将这些问题遗留给综合全局的ER模式阶段。
   c.冗余联系的例子。

   ③命名联系和确定键。
   a.命名应反映联系的语义性质,通常采用某个动词命名,如“选修”、“讲授”、“辅导”等。
   b.与实体类型不同,联系类型没有标识符概念。
(4)分配属性
   ①确定属性的原则。
   a.属性应该是不可再分解的语义单位。
   b.实体与属性之间的关系只能是N:1的。
   c.不同实体类型的属性之间应无直接关联关系。
   ②把属性分配到有关实体和联系中去。
   a.当多个实体类型用到同一属性时,一般把属性分配给那些使用频率最高的实体类型,或分配给实体值少的实体类型。
   b.有些属性不宜归属于任一实体类型,只说明实体之间联系的特性。例如,某个学生选修某门课的成绩,既不能归为学生实体类型的属性,也不能归为课程实体类型的属性,应作为“选修”联系类型的属性。
2.设计全局ER模型
(1)确定公共实体类型
   ①有的作为实体类型,有的又作为联系类型或属性。
   ②即使都表示成实体类型,实体类型名和键也可能不同。
   ③在这一步中,我们仅根据实体类型名和键来认定公共实体类型。
   ④一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候选。
(2)合并局部ER模型
   ①首先进行两两合并。
   ②先合并那些现实世界中有联系的局部结构。
   ③合并从公共实体类型开始,最后再加入独立的局部结构。
(3)消除冲突
   ①冲突的三种类型。
   a.属性冲突,包括:属性域的冲突,即属性值的类型、取值范围或取值集合不同。例如,重量单位有的用公斤,有的用克。
   b.结构冲突。
     ·同一对象在不同应用中的不同抽象。如职工,在某个应用中为实体,而在另一应用中为属性。
     ·同一实体在不同局部ER图中属性组成不同,包括属性个数、次序。
     ·实体之间的联系在不同的局部ER图中呈现不同的类型。如,E1与E2在某一应用中是多对多联系,而在另一应用中是一对多联系;在某一应用中E1与E2发生联系,而在另一应用中,E1、E2与E3三者之间有联系。
   c.命名冲突,包括属性名、实体名、联系名之间的冲突。
     ·同名异义,即不同意义的对象具有相同的名字。
     ·异名同义,即同一意义的对象具有不同的名字。
   ②冲突的解决方法。
   a.属性冲突和命名冲突通常采用讨论、协商等行政手段解决。
   b.结构冲突则要认真分析后才能解决。
3.全局ER模型的优化
(1)一个好的全局ER模型应满足下列条件
   ①实体类型的个数尽可能少。
   ②实体类型所含属性个数尽可能少。
   ③实体类型间联系无冗余。
(2)全局ER模型的优化原则
   ①合并实体类型。
   a.减少实体类型个数,可减少联接的开销,提高处理效率。
   b.一般在权衡利弊后,可以把1:1联系的两个实体类型合并。
   c.具有相同键的实体类型有必要合并成一个实体类型。但这时可能产生大量空值,因此,要对存储代价、查询效率进行权衡。
   ②消除冗余属性。
   a.通常在各个局部结构中是不允许冗余属性存在的。但在综合成全局ER模型后,可能产生全局范围内的冗余属性。
   b.一般同一非键的属性出现在几个实体类型中,或者一个属性值可从其它属性的值导出,此时,应把冗余的属性从全局模型中去掉。
   c.冗余属性消除与否,也取决于它对存储空间、访问效率和维护代价的影响。有时为了兼顾访问效率,有意保留冗余属性。这当然会造成存储空间的浪费和维护代价的提高。
   ③消除冗余联系。
   在全局模式中可能存在有冗余的联系,通常利用规范化理论中函数依赖的概念消除冗余联系。
4.实例
(1)学籍管理子系统的局部ER图

(2)课程管理子系统的局部ER图

(3)教师管理子系统的局部ER图

(4)合并后的教学管理全局ER图