1
数据库原理与应用技术
1.5.4.2 4.4.2 数据抽象
4.4.2 数据抽象

概念模型是对现实世界的一种抽象。而抽象是对实际的人、物和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念加以精确描述的过程。

抽象是形成概念的必要手段。在数据库概念设计中,人们常用如下3种数据抽象。

1. 分类

分类(Classification)定义某一概念作为现实世界中一组对象的类型(Type),这些对象具有某些共同的特性。分类抽象了对象(实例)与对象型之间的“is-a”的语义。在E-R模型中,实体型就是从同类实体中通过分类抽象而得出的。例如,在学校环境中,张强“is-a”学生,李利“is-a”学生…张强等人具有相同的属性。通过分类,我们得到了“学生”这个实体型(见图4-10(a))。

进一步扩展分类的概念,可以认为两个实体型之间的联系型,也是从多个具有某些共同特性的联系实例中通过分类抽象而得到的。例如,导师“指导”研究生,就是从多个具体的“指导”个案中,通过分类而得到的(见图4-10(b))。

分类是单向语义,其对应的相反语义是例示(Instantiation)。

图4-10 分类抽象

2. 一般化

一般化(Generalization)定义从特殊实体型到一般实体型的一种抽象,后者是更抽象或更一般化的概念。例如,本科生、研究生是两种较具体的实体型,将它们进行一般化抽象,可以得到学生实体型(见图4-11)。

图4-11 一般化抽象

这里,学生称为超实体型(Super Entity Type)或超类(Superclass),本科生或研究生称为(学生的)子实体型(Sub Entity Type)或子类(Subclass)。一般化抽象了从子实体型到超实体型之间的“is-a-subtype-of”或“is-a-kind-of”的语义。

一般化也是单向语义,其对应的相反语义是特殊化(Specialization)。特殊化有一个很重要的性质:继承性(Inheritance),即子实体型继承超实体型上定义的所有抽象。这样,本科生、研究生继承了学生的所有属性。子实体型也可增加自己的某些特殊属性,例如,研究生可以有“导师”属性。此外,此种抽象可以定义多层的结构,例如,研究生又是博士生、硕士生的一般化。

一般化与分类有点相似,但语义是完全不同的。例如,我们不能说研究生“is-a”学生,只能说研究生“is-a-kind-of”学生。分类是值和型之间的抽象,而一般化是型和型之间的一种特殊关联。

3. 聚集

聚集(Aggregation)又称为组装(Composition),主要定义某一类型的组成成分。它抽象了对象内部类型和属性之间的语义。其原则是,把一个复杂的概念看成若干简单概念的聚集体,而将复杂概念描述清楚,或简化对复杂概念的描述。

运用聚集抽象就是要区分概念的整体和它的组成成分,形成一个整体-部分结构。在E-R模型中,实体型和它们的属性形成了一个整体-部分结构,属性的聚集形成了实体型,如图4-12(a)所示。

聚集抽象了部分到整体的“is-a-part-of”语义。与聚集对应的相反方向抽象是分解(Decomposition),其语义是“has-a”。

更复杂的聚集是将一些实体型作为部分结构,形成更复杂的实体。在图4-12(b)中,我们将“选课”抽象成了一个实体型,而之前是抽象成一种联系,这也说明实体和联系的概念是相对的,它们之间可以相互转换。

图4-12 聚集抽象