先决条件——ER模型介绍
如今,数据的复杂性不断增加,因此使用传统的 ER 模型进行数据库建模变得越来越困难。为了降低建模的这种复杂性,我们必须对现有的 ER 模型进行改进或增强,使其能够以更好的方式处理复杂的应用程序。
增强的实体关系图是高级数据库图,与表示复杂数据库的要求和复杂性的常规 ER 图非常相似。
它是一种显示子类和超类的图解技术;专业化和泛化;联盟或类别;聚合等。
泛化和专业化——
这些是在真实实体中发现的非常常见的关系。然而,这种关系后来被添加为经典 ER 模型的增强扩展。专用类通常称为子类,而泛化类称为超类,这可能受到面向对象编程的启发。 “IS-A 分析”可以最好地理解子类。希望以下陈述对您的想法有意义“技术人员是员工”,“笔记本电脑是计算机”。
实体是另一个实体的特殊类型/类。例如,Technician 是大学系统中的特殊员工,Faculty 是特殊的 Employee 类。我们称这种现象为泛化/专业化。在这个例子中,Employee 是一个通用的实体类,而 Technician 和 Faculty 是 Employee 的特殊类。
示例 – “子类”关系的此示例实例。我们这里有四组员工:秘书、技术员和工程师。雇员是超类的其余三组个体子类是雇员集合的一个子集。
- 属于子类的实体与某个超类实体相关。比如emp,1001号是秘书,打字速度是68。Emp no 1009是工程师(子班),行业是“电工”,以此类推。
- 子类实体“继承”了超类的所有属性;例如,员工 1001 将具有属性 eno、姓名、薪水和打字速度。
上例的增强型 ER 模型 –
约束—— “子类”关系有两种类型的约束。
- 全部或部分 –如果每个超类实体都与某个子类实体相关联,则子类关系是全部的,否则是部分的。子类“基于工作类型的员工类别”是部分子类——不必每个员工都是(秘书、工程师和技术员)之一,即这三种类型的工会是所有员工的适当子集。而其他子类“受薪雇员和计时雇员”是总数;子类实体的联合等于员工总数,即每个员工都必须是其中之一。
- 重叠或不相交——如果来自超集的实体可以在多个子类集中相关(可能出现),则它是重叠子类,否则是不相交的。这两个示例:基于工作类型和工资/小时雇员子分类是不相交的。
注 –这些约束相互独立:可以是“重叠且全部或部分”或“不相交且全部或部分”。此外,子类具有传递属性。
多重继承(多个超类的子类)——
一个实体可以是多个实体类型的子类;这些实体是多个实体的子类,并有多个超类;助教可以是 Employee 和 Student 的子类。大学系统中的教职员工可以是 Employee 和 Alumnus 的子类。在多重继承中,子类的属性是所有超类属性的联合。
联盟——
- 一组图书馆成员是教职工、学生和工作人员的联盟。联合关系表示任一类型;例如,图书馆成员是 Faculty 或 Staff 或 Student。
- 下面是两个例子说明如何UNION可以在ERD描绘-车主是人名和公司,和RTO注册车辆的联合是汽车和卡车的UNION。
您可能会在 Sub-class 和 UNION 中看到一些混淆;考虑上图中的一个例子,Vehicle 是 CAR 和 Truck 的超类;这也是子类的正确示例,但在这里使用不同,我们说 RTO 注册车辆是汽车和车辆的联合,它们不继承车辆的任何属性,汽车和卡车的属性是完全独立的集合,其中在子类情况下,汽车和卡车将继承车辆类的属性。
参考 –
彗星.lehman.cuny.edu
cs.toronto.edu