《数据库系统第4章》由会员分享,可在线阅读,更多相关《数据库系统第4章(76页珍藏版)》请在金锄头文库上搜索。
1、4 高级数据库模型,4.1 E/R 模型4.2 设计原则4.3 E/R 模型中的约束4.4 弱实体集4.5 *从E/R图到关系设计 4.6 子类结构到关系的转化4.7 统一建模语言4.8 UML图到关系的转化,4 高级数据库模型,在数据库设计阶段, 通常需要提出并回答存储什么信息,信息之间如何关联,假定有哪些约束,例如键和参照完整性,等等。这个过程可能很长,其间需要评价不同的可选方案,协调不同的意见。在这个过程中,往往会先采用高级模型来建模。高级建模的几种方法:实体-联系图(entity-relationship diagram), 统一建模语言(UML), 对象描述语言 (ODL).,4.1
2、 The Entity/Relationship Model,实体/联系模型是较早采用的一种高级数据模型,以 图形化的方式表达数据库设计. 仅描述数据的结构及相互间的联系. 不描述数据的变化及对数据的操作.设计结果称为 实体/联系图 或 E/R图.,4.1 The Entity/Relationship Model,主要的元素类型:Entity(实体): “thing” or object.Entity sets: 同类实体的集合。类似于面向对象语言中的类的概念。Attributes(属性): 实体集中实体所具有的性质. E/R模型中,属性一般要求具有原子类型,比如整型、实型或字符串.Rela
3、tionships(联系): 两个或多个实体集的关联。这种关联反映的是在数据库中需要表达的数据之间的内在联系或对应关系。,4.1.4 实体-联系 图,在实体联系图中:用矩形表示实体集.用椭圆表示属性,用连接到矩形的连线表示属性所对应的实体集.,4.1.4 实体-联系 图,用菱形表示联系,用连接到矩形的连线表示联系所关联的实体集。,Figure 4.2,4.1.5 E/R 图实例,实体集的实例是指一个属于该实体集的实体的集合。联系的实例是指相关连的实体的集合。一个连接n个实体集的联系,可以用一个n元组的集合来表示。E/R图实例即指一个用E/R图描述的数据库模式可能对应的实体集实例及联系实例的集合
4、。,4.1.5 E/R 图实例,对于联系 stars-in, 其实例可以表示为:联系集中的元组并不是一个真正的关系元组,因为它们的分量值是实体.,4.1.6 二元 E/R 联系的多样性,多样性 (Multiplicity): 对实体集之间的联系的一种量的约束. 两种基本的多样性:One: 关联 0 或 1 个实体, 至多1个.Many: 关联 0 或多个实体.,4.1.6 二元 E/R 联系的多样性,实体集 A 与实体集 B 之间的二元联系的多样性:一对一:两个实体集中的任何一个实体至多和另一个实体集中的一个实体关联.多对一 (一对多):B 中的一个实体可以与 A 中的零到多个实体关联; 但
5、A 中的一个实体至多与 B 中的一个实体关联,称为 A 到 B 的多对一联系。多对多:两个实体集中的任何一个实体都可以和另一个实体集中的零到多个实体关联.,4.1.6 二元 E/R 联系的多样性,多样性的表示:对于多对一联系,在一的实体集一方加上箭头。对于一对一联系,在两个实体集方向都加箭头。注意:箭头表示最多一个,但箭头指向的实体集中的实体可能不存在。圆箭头表示有且仅有一个。,4.1.6 二元 E/R 联系的多样性,Example: Relationship Used-by between entity sets Workers and Equipments.,Workers,Used by
6、,Equipments,4.1.7 多路(Multiway)联系,某些时候, 联系可能涉及多个实体集.A ternary (three-way) relationship is common.,Contracts(签约) is a ternary relationship.The relationship can be described by a 3-tuples of the form: (studio, star, movie),4.1.7 多路(Multiway)联系,确定三元联系的多样性分别选定 A,B 实体集中的一个实体,判断 C实体集中有一个还是多个实体与之关联。,4.1.8 联
7、系中的角色(Roles),在一个联系中,一个实体集可能出现两次或多次.在联系的每条边上加以标注以区分其作用,称之为角色 (roles).,每个联系连接两部电影,其中一部是首集,另一部是续集.,4.1.8 联系中的角色(Roles),Example 4.7: A four-way relationship,4.1.8 联系中的角色(Roles),两个实体集之间可能存在多个联系.,4.1.9 联系上的属性,联系上附加属性,可以更充分地表达信息.可以将这类属性视作联系集中的元组的一个性质.比如,可以在三元联系“contracts”上增加 “salary” 及 “signdate” 属性。也可以在 “
8、students” 与 “courses”之间的联系“Enrollment ”上增加属性 “score” 。,4.1.9 Attributes on Relationships,4.1.10 多路联系到二元联系的转换,将多路联系转换为二元联系某些数据模型约束联系必须是二元的以三元联系为例:将三元联系转换成一个新的实体集,称为连接实体集(connecting entity set).确定连接实体集的属性.建立三个由连接实体集到原来的三个实体集之间的二元的多对一联系 。,4.1.10 多路联系到二元联系的转换,Contracts,4.1.10 多路联系到二元联系的转换,连接实体集一种新的实体集,其
9、中每个实体对应多路联系中联系集的一个元组. 通常有自己的属性.需要转换为实体集的联系多路联系多对多联系带有属性的联系,4.1.11 E/R模型中的子类 (Subclasses),实体集中可能含有一些实体,它们具有其它实体所没有的特殊性质。定义一些特类实体集或子类就很有用,它们可以拥有自己的属性或联系。实体集与子类之间用一种特殊的联系来关联。称作 isa.isa 是一种特殊的联系,用三角形表示,表达实体集间 A 是 B 的关系。每个 isa 联系都是一对一联系.,4.1.11 E/R模型中的子类 (Subclasses),Example 4.10: 卡通片是电影的一种.不是所有的影片都是卡通片,
10、但有些是.假定除电影所具有的所有属性及联系之外,卡通片还与 stars 之间拥有联系 voices .三角形 Isa 表示子类联系.,4.1.11 E/R模型中的子类 (Subclasses),在面向对象的概念中,对象仅属于某一个类。子类继承父类的属性及方法.在 E/R 模型中,实体由父类及其所属的所有子类共同表示.即: 若实体 e 在某个子类中出现,则 e 必在其父类集中也出现.,4.1 The Entity/Relationship Model,Exercises: P81 4.1.1 4.1.2,4.2 设计原则,设计原则: 指导我们分析需求,完成数据库设计的原则.为了真实、完整地反映需
11、求,构造好的数据库设计,避免常见的问题。忠实性原则避免冗余简单性原则选择正确的联系选择合适的元素类型,4.2.1 忠实性,忠实性(Faithfulness):设计应当忠实于应用的具体要求.实体集, 联系极其属性都应当反映现实.保持一致性,避免自相矛盾 的设计Example 4.13: 教师 教授 课程.,Instructors,time,序号,4.2.2 避免冗余,每件事只说一次。Redundancy(冗余) occurs when we say the same thing in two or more different ways.冗余浪费存储空间,并且可能导致数据不一致.The two
12、instances of the same fact may become inconsistent if we change one and forget to change the other one.,4.2.2 避免冗余,Good design,This design gives the address of each studio exactly once.,4.2.2 避免冗余,Bad design,This design states the studio of a movie twice: as an attribute and as a related entity.,Mov
13、ies,title,year,studio,Owns,Studios,name,address,genre,4.2.2 避免冗余,Bad design,This design repeats the studios address once for each movie and loses the address if there are temporarily no movies for a studio.,Movies,title,year,length,studioName,genre,studioAdd,4.2.3 简单性,简单性(Simplicity):除非有绝对必要,不要在你的设计
14、中添加更多成份.,Holding 表示每部电影的所有权,但没有实际用途。 如果两个实体集是一对一联系,并且有相同的键,通常可以将它们合并为一个实体集。,4.2.4 选择正确的联系,避免冗余把每种可能的联系都加到设计中通常不是好的办法。Example 4.15 是否需要把联系 Stars-in 及 Owns 加入进来呢?这取决于问题中对这三个联系的假定。,4.2.4 选择正确的联系,Example 4.16,4.2.5 选择正确的元素类型,我们可以选择不同的设计元素类型来表示现实世界。选择的原则是更合理,更自然,更简单,更接近需求。实体集还是属性?属性比实体集或联系更易于实现。Dont use
15、an entity set when an attribute will do.如果除名字外有更多的相关信息要描述,用实体集更为合适。If it has only its name to contribute to the design, then it probably is better made an attribute. 在 E/R 模型中, 实体集的每个属性通常必须是单值。因此,如果具有多值,用实体集更为合适。 新员工综合信息登记表,4.2.5 选择正确的元素类型,实体集 E 用属性代替的条件(P85)所有与 E 有关的联系都必须有箭头指向 E,即 E 必须是多对一联系中的一。如果 E 有多个属性,没有属性依赖于其它属性。没有联系包含 E 多次。代替实体集 E如果实体集 F 到 E 有多对一联系 R,删除 R,把 E 的属性作为 F 的属性。如果有多路联系 R 的箭头指向 E,把 E 的属性作为 R的属性,删除从 R 到 E 的弧。,4.2.5 选择正确的元素类型,多路联系还是连接实体集? 应该根据需求来抉择。Example 4.18:,如果对电影公司的数目不作约束,4.2 设计原则,Exercises: P86 4.2.1,