数据建模语言Information Engineering - IE模型

2023-06-07,,

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 OrderParty是多对一 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 
关联基数:用来表示关联实体的数量上限,为1n
图中右边部分表示的意义如下:1A必须关联到1个或多个B,一个B可以关联0个或1A

关联的约束如图所示,ProductService通过一个圆连接到Order Line。如果是实心圆则表示ProductServiceexclusive or;如果是空心圆则表示ProductServiceinclusive or(相容的,conjunctive),表示可以是其中之一或者多个
在上面IE模型图中,Order Line右侧是Finkelstein的一个特殊符号,表示一个Purchase Order初始时有0nOrder Line,但最终必须有1nOrder Line
Martin
以动词命名关联关系,只命名一个方向(遵循从左到右、从上往下的方式),而Finkelstein不对关联关系命名

 

 Sub-type:图中Party子类的表示方法由Martin采用,Finkelstein则对每个子类使用单独的实体,使用ISA关联关系(关联关系名称为ISA,也有采用类似UML继承的三角形符合,在关联线上使用一个三角形的)表示其为子类