Loading... # 增强的实体-联系建模 ER建模基本概念无法充分表示新的复杂应用,所以提出新的语义建模概念,纳入ER模型中,成为增强的实体-联系模型 ## 特殊化/泛化(specialization/generalization) ### 超类和子类 > 超类(Superclass) | 其出现构成一个或多个独立子集,且各独立子集均需在数据模型中单独表示 > 子类(Subclass) | 实体类型的一个独立的出现子集,且需在数据模型中单独表示 eg:超类Staff——子类Manager、SalesPersonnel、 Secretary **二者联系** * 超类和子类联系是一对一 * 超类可以包含重叠的或不同的子类 * 并非每个属于超类的成员都必须是某个子类的成员 eg:为避免在一个实体类型中描述那些具有不同属性的不同类型的员工,我们可以使用超类和子类 如图,不同种类的staff,有些属性为空 ![image-20220317091034574.png](http://xherlock.top/usr/uploads/2022/03/642060830.png) **使用原因** * 避免对对相似概念重复描述 * 增加语义信息 ### 属性的继承 子类的实体同超类一样表示了客观存在的同一对象,子类的实体除了拥有该子类特有的属性外,**还拥有超类的所有属性**(eg:上表中manager继承了staff的staffNo、name、position、salary属性) **类型层次**(type hierarchy):实体、实体的子类、实体的子类的子类等 多种命名:特殊化层次、泛化层次、IS-A层次 ### 特殊化和泛化过程 > 特殊化 | 通过标识实体成员间的差异特征而将这些成员间的差异最大化的过程(**类似拆分、最大公约数**) eg:将staff特殊化为Manager、SalesPersonnel、Secretary > 泛化 | 通过标识实体成员间的共同特征而将这些成员间差异最小化的过程(**类似合并、最小公倍数**) eg:将Manager、SalesPersonnel、Secretary泛化为staff **图形化表示** 表示子类的矩形下部分列出该子类特有的属性,超类下部分列出所有子类共有的属性 ![image-20220317093229457.png](http://xherlock.top/usr/uploads/2022/03/1078770618.png) 根据不同的差异特征可以将同一实体进行多种形式的特殊化 ![image-20220317093858274.png](http://xherlock.top/usr/uploads/2022/03/591383102.png) 进一步扩展:子类SalesManager继承了Staff、Manager、SalesPersonnel的属性,同时拥有自己的属性SalesTarget ![image-20220317094552375.png](http://xherlock.top/usr/uploads/2022/03/3840451089.png) ### 特殊化/泛化的约束 #### 参与约束(participation constraint) 限定每个超类的成员是否一定是某个子类的成员,可以是强制的(mandatory)或者可选的(optional) 强制的:每个超类的成员必须也是某个子类的成员 可选的:超类的成员不一定也是其子类的成员 #### 不相交约束(disjoint constraint) 描述子类成员之间的联系,说明超类的某一成员是仅为一个还是同时为多个子类的成员,可以是disjoint(or)或者nondisjoint(and)【当一个超类拥有不止一个子类时】 不相交的:一个实体出现只能是一个子类的成员 非不相交的:一个实体出现可以同时为多个子类的成员 **不相交约束和参与约束相互独立** * 强制参与不相交约束 * 可选参与不相交约束 * 强制参与不相交约束 * 可选参与非相交约束 最后修改:2022 年 03 月 17 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏