实体-联系(E-R)数据模型,它提供了一个找出在数据库中表示的实体以及实体间如何关联的方法。最终,数据库设计将会表示为一个关系数据库设计和一个与之关联的约束集合。
(1)概念设计(conceptual-design)阶段多产生的模式提供了一个对企业的详细总数。用实体-联系模型的术语来说,概念模式定义了数据库中表示的实体、实体的属性、实体之间的联系,以及实体和联系上的约束。概念设计阶段会导致实体-联系图上的构建,提供了对模式的图形化描述。设计者检查此模式以确保所有数据需求都满足,并且互相不冲突。可以检查该设计以去除冗余的特征。这个阶段,关注的是描述数据及其联系,而不是定义物理存储细节。
(2)完善的概念模式还需指明企业的功能需求。在功能需求规格说明(specification of functional requirement)中,用户描述将在数据上进行各类操作(或事物)。操作的例子包括修改或更新数据,搜索并取回特定数据,以及删除数据。设计者可以检查所设计的模式,以确保其满足功能需求。
(3)逻辑设计阶段(logical-design phase)中,设计者将高层概念模式映射到将使用的数据库系统的实现数据模型上。实现数据模型通常是关系数据模型,该阶段通常包括将以实体-联系模型定义的概念模式映射到关系模式。
(4)物理设计阶段(physical-design phase),该阶段指明数据库的物理特征,这些特征包括文件组织格式和索引结果的选择。
数据库设计过程的一个主要部分是决定如何在设计中表示各种类型的事物,‘人’,‘地方’。用实体这个术语来指示所有可明确识别的个体。以各种各样的实体以多种方式互相关联,而所有这些方式都需要在数据库设计中反映出来。一名学生在一次开课中选课,一名教师在一次开课中授课,授课和选课就是实体间联系的实例。
设计一个数据库模式时,必须确保避免两个主要的缺陷:
(1)冗余:一个不好的设计可能会出现重复信息。冗余也可能出现在关系模式中。信息冗余表达的最大问题是当队一条信息进行更新但没有将这条信息的所有拷贝都更新时,这条信息的拷贝会变得不一致。
(2)完整:一个不好的设计可能会使得企事业机构的某些方面难于甚至无法建模。
旨在方便数据库的设计,是通过允许定义代表数据库全局逻辑结构的企业模式实现的。
(1)实体集
实体是现实世界中可区别于所有其他对象的一个事物或对象。每个实体都有一组性质,其中一些性质的值可以唯一标识一个实体。实体可以是实实在在的,也可以是抽象的。
实体集是相同类型即具有相同性质或属性的一个实体集合。
建模中,用术语抽象的表达实体集,而不是指某个个别实体的特别集合。实体集的外延是指属于实体集的实体的实际集合。实体集不必互不相交。
实体通过一组属性来表示。属性是实体集中每个成员所拥有的描述性性质。为某实体集制定一个属性表明数据库为该实体集中每个实体存储相似的信息;但每个实体在每个属性上都有各自的值。每个实体的每个属性都有一个值。数据库包括一组实体集,每个实体集包括任意数量的相同类型的实体。
(2)联系集
联系是指多个实体间的相互关联。联系集是相同类型联系的集合。是n2个(可能相同的)实体集上的数学关系。实体集之间的管理啊称为参与;实体集E1,E2等参与联系集R。E-R模式中的一个联系实例表示在所建模的现实世界企业中命名实体间的一个关联。
实体在联系中扮演的功能称为实体的角色。由于参与一个联系集的实体集通常是互异的,因此角色是隐含的并且一般并不制定。联系的含义需要解释时角色是很有用的。当参与联系集的实体集并非互异的时候就是这种情况。同样的实体集以不同的角色参与一个联系集多余一次。在这类联系集中,即有时称作自环的(recursive)联系集中,有必要用显式的角色名来指明实体是如何参与联系实例的。
联系也可以是描述性属性。考虑实体集间的联系集。
给定的联系集中的一个联系实例必须是由其参与实体唯一标识的,不必使用描述属性。
相同的实体集可能会参与到多于一个联系集中。
参与联系集的实体集的数目称为联系集的度。二元联系集度为2,三元联系集度为3。
(3)属性
每个属性都有一个可取值的集合,称为该属性的域,或者值集。
实体集的属性是将实体集映射到域的函数。由于一个实体集可能有多个属性,每个实体可以用一组(属性,数据值)对来表示,实体集的每个属性对应一个这样的对。
E-R模型中的属性类型:
(1)简单和复合属性。不能划分为更小的部分-简单。可以划分为更小的属性(其他属性)-复合。name address
*(2)单值和多值(花括号将属性括住)。ID,phonenumber 适当情况下,可对多值属性的取值数目上设置上、下界。
(3)派生属性。这类属性的值可以从别的相关属性或实体派生出来。
基属性-存储的属性 派生属性的值不存储,需要的时候算出来。
E-R企业模式可定义一些数据库中的数据必须要满足的约束。
(1)映射基数(mapping cardinality)
也叫基数比率,一个实体通过一个联系集能关联的实体的个数。
一对一:A中的一个实体至多与B中的一个实体相关联,且B中的一个实体也至多与A中一个实体相关联。
一对多:A中的一个实体可以与B中的任意数目(零哥或多个)实体相关联,而B中一个实体至多与A中一个实体相关联。
多对一:A中的一个实体至多与B中的一个实体相关联,B中的一个实体可以与A中的任意数目(零哥或多个)实体相关联
多对多:A中的一个实体可以与B中的任意数目(零哥或多个)实体相关联,B中的一个实体可以与A中的任意数目(零哥或多个)实体相关联
一个特定联系集的适当的映射基数依赖于该联系集所建模的显示实际的情况。
(2)参与约束
若实体集E中的每个实体都参与到联系集R的至少一个联系中,实体集E在联系集R中的参与称为全部的。
若E中只有部分参与到联系集R的联系中,实体集E在联系集R中的参与称部分。
(3)码
必须有一个区分实体集的实体的方法。概念上,各个实体是互异的,但从数据库观点来看,区别必须通过属性来表明。
一个实体的属性的值必须可唯一标识该实体。一个实体集中不允许两个实体对于所有属性具有完全相同的值。
实体的码是可以区分每个实体的属性集。
如果实体集间主码的属性名称不是互不相同的,重命名这些属性以区分它们;实体集的名字加上属性名可构成唯一的名称。如果一个实体集不止一次参与某个联系集,则使用角色名代替实体集名构成唯一的属性名。
联系集的主码结构依赖于联系集的映射基数。
五、实体-联系图
E-R图可图形化表示数据库的全局逻辑结构。简单清晰,使E-R模型广泛应用的重要性质。
(1)基本结构
分成两部分的矩形代表实体集,阴影部分包含实体集的名字,第二部分包含实体集中所有属性的名字。
菱形代表联系集。
未分割的矩形代表联系集的属性。构成主码的属性以下划线标明。
线段将实体集连接到联系集。
虚线将联系集属性连接到联系集。
双线显示实体在联系集中的参与度。
双菱形代表连接到弱实体集的标志性联系集。
(2)映射基数