选择主关键字 替代键属性 关系定义
关系表示实体间的连接(connection)、链接(link)或关联,他们是框图的 “动词”,用来显示实体间的相互联系,这里是一些例子:
A TEAM
A PLANE-FLIGHT many PASSENGERs.
A DOUBLES-TENNIS-MATCH
有关标题:
多少是 “多”?
关系的基本框图语法
读模型
如果选择正确的动词短语,就可以使用动词短语从父实体到子实体来读关系。前一图表将被读作为:
A PLANE-FLIGHT many PASSENGERs 下一个框图被读作:
A CUSTOMER
Figure 3.7.
A MOVIE
Figure 3.8.
A PERSON
Figure 3.9.
下一个例子包括关联的实体,他们更难于”读”,因此,在第5.2章 (图5.14.)我们将回到这个例子。
A PERSON
8
An ADDRESS is
Figure 3.10. Associative entity example.
动词短语也可以从子实体读起,如”被动动词”短语表达,例如:
Figure 3.7: A MOVIE-RENTAL-AGREEMENT
泛化结构(Generalization Hierarchies)和继承
泛化或继承层次也叫做子类,或子范畴层次,是实体集分组的一种方法,这些被分组的实体共享公共特性。例如,在建模型工作中,我们也许发现,在一个银行中有几个不同类型的帐户ACCOUNTs存在,如:支票、存款和贷款帐户ACCOUNT,叫做ACCOUNT的泛化实体(或类实体)被形成来表示这三类帐户的共用信息,如图3.11所示。
有不同的术语来表示泛化层次的实体,IDEF1X使用概念范畴category来引用”子类型”,其它人为这些子实体使用概念子范畴(subcategory)。在本文中,我们按照IDEF1X来 “分类”。
有关标题: 分类甄别器
3.2 关系和外键属性
在前一章关系模型 (2.2),关系模型、层次模型和网状模型的主要区别是关系的表示,层次和网状模型是在物理层上用指针型数据结构来表示关系;相对地,相关模型在逻辑层上用共享键来获取关系。
ERwin使用的 IDEF1X模型语言也用共享键表示关系,虽然 IDEF1X确定地用于被存
9
储在非关系型数据库管理系统的模型信息,但IDEF1X对键的处理是关系的。
无论何时,在 ERwin框图中的实体通过关系来连接,关系贡献键给子实体,外键属性定义为父实体的主关键字属性,通过关系贡献给子实体,贡献的键称为父实体到子实体的迁移,在模型中外键属性通过属性名后的(FK)来表示,如图3.12所示。
有关标题:
标识和非标识关系 独立实体 依赖实体 角色名
标识和非标识关系
在标识关系中,外键迁移到键区(线上)。
Figure 3.12: Identifying relationship. 关系被称为标识,是因为父实体的键成了子实体标识的一部分,即子实体的标识依赖于父实体。标识关系用连接两个实体间的带点实线来表示,到目前为止,我们见到的所有关系都是标识关系。
Figure 3.13: Identifying relationship.
在这个例子中,PLAYERs由”team name”和”player name”两个来标识,这必须的,因为有时,同一个球员可以参加不同球队,并且有时,业务 (比如说管理的棒球统计)需要区分球队成员。
标识关系运用其业务规则,即通过父实体的标识符来标识子实体。在3.8中电影和电影-拷贝例子中,通过它拥有的唯一编号来标识拷贝,相反,我们决定用电影的标识符和增加第二部分(拷贝-编号)来区分每一个拷贝。
非标识关系 (虚线)也连接父实体和子实体,由非标识关系迁移的非空外键子集被置于数据区(线下)。
10
Figure 3.14: Non-identifying relationship.
既然在非标识关系中一些 (或所有)迁移的键不是子实体主关键字的一部分,那么子就不能由父来标识。正如我们将在第5和 6章所要了解的,当我们在插入、删除和更新操作下需要保持的父子关系完整性时,这个差别非常重要。这被称作参照完整性问题。
在乘客-座位例子中,航空公司已挑选”seat number”来标识座位-预留的实例。
Figure 3.15: PASSENGER-SEAT example.
由于相同座位占有者在每一次飞行中是变化的,目前乘客PASSENGERi不是键的一部分。然而,这个模型仍然不恰当,只用 “seat number”不能充分地标识当前乘客所预订的座位。在下面的模型中,我们扩展了座位-保留SEAT-RESERVATION的键,增加了”flight-number”来申明FLIGHT和SEAT-RESERVATION关系。(更多的非标识关系见第5章)
Figure 3.16: SEAT-RESERVATION example.
独立实体
实体被指定作为独立实体,或依赖实体,取决于其键的获得方式。
11
Figure 3.17: Independent entity and dependent entity. 独立实体由方角盒来指定,独立实体不依赖于模型中任何其它实体来标识。在先前例子中 (图2.4和 3.7),每个消费者由唯一的 “消费者-编号”来标识;另一方面,我们的出租店有许多电影拷贝,在此有两个选择------或者使用它本身的唯一”电影-拷贝-编号”来标识每个电影拷贝(使它成为一个独立实体),或组合 “电影-编号”和”拷贝-编号”来标识每个拷贝。由于 “电影-编号”是电影的标识符,那么称对电影-拷贝MOVIE-COPY的标识依赖电影MOVIE。
依赖实体
依赖实体被指定为圆角盒,依赖实体依存于模型中的其它实体。
通常,关系引起父子实体间的依赖。在存在依赖中子实体的存在依赖于父实体的存在。在标识依赖中,不使用父实体的键就无法标识依赖实体。标识关系总是导致存在依赖和标识依赖。
举例说明标识依赖,没有标识电影(独立实体)的 “电影-编号”,电影-拷贝就不能被标识,没有”球队名”就不能标识球员。
Figure 3.18: Movie example.
Figure 3.19: Team example repeated from above.
没有电影就没有电影-拷贝,没有球员所属的球队就没有球员,非标识关系不引起任何标识依赖 (迁移键到数据区),然而,如第5章所示,他们中许多导致存在依赖。
角色名(Rolename)
rolename是外键属性的新名字,角色名定义一个新属性,它用来描述由关系体现的业务陈述。
这儿有一个简单例子:
12