ER模型详解

Entity Relationship Model - ER模型 - 实体关系模型
1976年Peter Chen首次提出了Entity Relationship Modeling(实体关系建模)概念,并发明了陈氏表示法Peter Chen's Notation,因此ER模型也可以叫做Chen's Model(陈氏模型)。下面是一个ER模型(ERD - ER diagram - Entity Relationship diagram)示例:
图:ER模型 - Peter Chen's Notation图:ER模型 - Peter Chen's Model,实际上这是一个EER - Enhanced Entity-Relationship Model,扩展ER模型
Entity 实体使用方框表示
Attribute 属性:使用圆或椭圆表示。实体和实体关系都可以拥有属性,例如图中的Order-Line关系拥有3个属性
Relationship 关联关系:使用菱形表示,菱形中写上关联关系的名字
ER模型中关联关系也可以拥有属性,在多对多关联关系中不需要使用额外中间关联实体来表示,关联关系本身就可以作为这个中间实体。另外ER模型的关联关系不限于2个实体之间,可以在多个实体间使用一个关联关系
Unique Identifier 唯一标识
陈氏表示法没有很好的解决唯一标识问题,仅使用一种简单的标记方法,下图表示Party的ID作为Purchase Order唯一标识一员的情况,关联关系名称改为E,朝依赖实体方使用一个箭头,依赖实体使用一个额外的方框括起来
图:ER模型中唯一标识的表示方法图:ER模型中唯一标识的表示方法
Sub-type 子类型
最初的陈氏表示法中不包含子类型概念,后来Robert Brown和Mat Flavin添加了子类型表示法,这种ER模型称为扩展ER模型。上图ER模型中有一个子类型例子,超类Party派生出子类Organization和 Person张哲源
Constraints between relationships 关联关系的约束
最初的陈氏表示法中关联关系的每一端只使用一个数字表示,比如一对多的关联关系,在一端使用1,另一端实体上使用n表示,这对关联关系约束不充分。上图的 ER模型在关联关系每一端使用2个数字表示,这与Crow's Foot表示法以及UML中的optionality(可选项)、cardinality(关联基数)有些类似又有较大的区别,详细说明如下:
    上图中一个Purchase Order必须关联一个Party,必须关联一个或多个Order Line,每个
Order Line要么是一个Product要么是一个Service
    Purchase Order右边的(1,)1表示一个Purchase Order有且必须有一个Party
    Party左边的(0,)n表示一个Party可以拥有多个Purchase Order,也可以没有
    Purchase Order左边的(1,)n表示Purchase Order必须有一个或多个Order Line
l-苯丙氨酸    Order Line右边的(1,)1表示每个Order Lien必须属于一个Purchase Order
    Order Line下面的(1,)1和菱形符号一起表示每个Order Line要么是一个Product要么是一个Service
    Product和Service上面的(0,)n表示Product和Service可以属于0个或多个Order Line
    Event和Event Category的关联关系稍特殊(实际中这种 n:1 的关系不多见),他不是一个普通的多对一关系。Event可以关联一个Event Category也可以不关联,而Event Category则必须关联一个或多个Event
Order-Line和Product、Service之间是一个exclusive or约束(异或、互斥约束,disjunctive mandatory约束)关系,使用超类和子类一样的表示法来表示。因为exclusive or的语义本身已经已经表明Order Line必须是Product或者Service其中之一,因此上图中Order Line右边和下面的(1,)1是多余的
EER - Enhanced Entity-Relationship Model 扩展ER模型
上面已经有些内容不属于最初的陈氏表示法,是后来其他人扩展的。陈氏表示法出现的早也存在一些不足,因此存在一些扩展以弥补缺陷,不同文档中使用的ER图也不尽相同,例如下图是wiki上的一个示例ER模型
图:Wiki上的ER模型示例图:Wiki上的ER模型示例
属性带下划线表示主键属性;关联关系连接线为两条线的表示"最少一个,或多个"(用于n的一端);实体和关联关系使用两个框的,可能是上面讲到的唯一标识表示法,也可能是"最少一个,或多个"表示法的一部分(这一点有待确认)。还有一些,例如属性与实体间用两条线连接的表示该属性为多值属性(上图中Region实体的Foliage属性)。图中的部分解释如下:
    1 Account has n(at least one) Character, Account的AcctName属性将成为Has的唯一标识的一员;遗传学三大定律
揠苗助长教学实录    1 Region contains n(at least one) Character, Region的RegionName属性将成为Character的唯一标识的一员;
Information Engineering - IE模型
Information Engineering采用Crow's Foot表示法(也有叫做James Martin表示法的),中文翻译中对使用了Crow's Foot表示法的模型也有笼统的称做鸭掌模型的(关联关系的关联
基数中采用到了一个鸭掌形的三叉线来表示)。他由Clive Finkelstein发明,与James Martin一起推广,后来两人各自做了些修正形成两份版本
前面示例模型的Information Engineering表示如下:
图:Information Engineering - IE模型 - Crow's Foot Model - 鸭掌模型图:Information Engineering - IE模型
    注意IE模型与ER模型的区别。Purchase Order与Party是多对一 n:1 的关联关系,在ER模型中n被放置在了Party的左边,而IE模型中n被放置在了Purchase Order的右边。两种表示法的形式(相当于语法)不一样,但语义是一致的。这一点也只有ER模型是特殊的,其他模型表示法中都与IE 模型一致
Entity & Attribute:实体属性并不出现在IE模型中,而是单独使用另外的文档记录
是真名士自风流
Relationship
Crow's Foot的可选项optionality和关联基数cardinality 表示法:
图:Crow's Foot的可选项optionality和关联基数cardinality 表示法图:Crow's Foot的可选项optionality和关联基数cardinality 表示法
Optionality 可选项:用来表示该关联关系是可选的,还是必须的。对于可选的关联关系,通常表现为用于关联的外键字段允许为null值,或者对于使用中间关联关系表的情况下可以不出现关联数据,而必须的关联关系则不允许外键为null或者必须存在关联数据
Cardinality 关联基数:用来表示关联实体的数量上限,为1、n等百慕大三角历险记
图中右边部分表示的意义如下:1个A必须关联到1个或多个B,一个B可以关联0个或1个A
关联的约束如图所示,Product和Service通过一个圆连接到Order Line。如果是实心圆则表示Product和Service是exclusive or;如果是空心圆则表示Product和Service是inclusive or(相容的,conjunctive),表示可以是其中之一或者多个
在上面IE模型图中,Order Line右侧是Finkelstein的一个特殊符号,表示一个Purchase Order初始时有0或n个Order Line,但最终必须有1或n个Order Line
Martin以动词命名关联关系,只命名一个方向(遵循从左到右、从上往下的方式),而Finkelstein不对关联关系命名
Sub-type:图中Party子类的表示方法由Martin采用,Finkelstein则对每个子类使用单独的实体,使用ISA关联关系(关联关系名称为ISA,也有采用类似UML继承的三角形符合,在关联线上使用一个三角形的)表示其为子类

本文发布于:2024-09-22 09:34:28,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/293818.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:关联   关系   表示   模型   使用
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议