目录
2. Specialization / Generalization 特化和概化
1.Participation constraint 参与性约束
1. 为什么需要EER model?
如图,staff有多种不同职务,而有的属性值是某一种职务特有的,其余的职务对它并不关心(如只有Manager有mgrStart和bonus,只有Secretary需要在乎typingSpeed),
此时绘制实体关系图可以在ER的基础上更细分,将父类(superclass)STAFF按照属性position值的不同下分出多个子类(subclass,和Java中的父子继承相似):Manager,Assistant,Secretary,...等等,这就是 “加强的ER”
什么时候用EER?
When one or both of:
1. Attributes apply to some (but not all) instances of an entity.
一类实体中,只有一部分个体实例需要有这个属性(其他个体就算有也都是空)
2. Instances of potential subclass participate in a relationship unique to that subclass;
有的关系只联系于superclass下某一类subclass(放在下边范例1的图看,就是Manager和Branch那种情况)
2. Specialization / Generalization 特化和概化
特化和概化的两种约束
1.Participation constraint 参与性约束
“爸爸”是否必须也是个“孩子”?
Mandatory: member of superclass must be member of subclassOptional: member of superclass may be member of subclass.
2.Disjoint constraint 相关性约束
“爸爸”可以是一个孩子,还是多个孩子?
Disjoint:member of superclass is member of at most one subclass ( or ).Non-disjoint:member of superclass can be member of more than one subclass ( and ).
上述约束条件交叉组合,形成4种不同的概化特化情况:
范例
1. 由关系Staff、Branch等改写来的EER,和第一个图的情况相似:
Staff中,由属性position值的不同可暂分3个subclass:Manager、Sales Personnel、Secretary,一个staff可能是三种职业中的任意一种,也可以都不是(还有别的职业),所以是{Optional,And};
由工时(全职 or 临时工)不同可分为2个subclass:FullTimePermanent、PartTimeTemporary, 一个staff要么全职,要么临时,没有别的选择,所以是{Mandatory,Or};
2. subclass也可以有subclass,一个subclass还可以有多个superclass(子类小奉先了属于是)。