DB2 10.5 for Linux, UNIX, and Windows

结构化类型层次结构

本节提供有关结构化类型层次结构的信息。

当然可以使用传统的关系表和列来为对象(例如,人员)建模。但是,结构化类型提供了另外一个属性“继承”。也就是说,结构化类型可以具有子类型,这些子类型将复用它的所有属性并且包含特定于该子类型的其他属性。原始类型为超类型。例如,结构化类型 Person_t 可能包含 NameAgeAddress 属性。Employee_t 可能是 Person_t 的一个子类型,它不但包含 NameAgeAddress 属性,而且还包含 SerialNumSalaryBusinessUnit 属性。

图 1. 结构化类型 Employee_t 继承超类型 Person_t 的属性
该图显示了类型 Person_t 的属性。

基于同一超类型的一组子类型(在同一层)称为类型层次结构。例如,数据模型可能需要表示称为“经理”的特殊类型的职员。经理比不是经理的职员具有更多属性。Manager_t 类型不但将继承为职员定义的属性,而且还会定义它自己的一些附加属性(例如,仅为经理提供的特别 bonus 属性)。

下图说明了可以从“人员”和“职员”类型派生的各种子类型:
图 2. 类型层次结构(BusinessUnit_t 和 Person_t)
类型层次结构(BusinessUnit_t 和 Person)

图 2 中,“人员”类型 Person_t 是层次结构的根类型Person_t 也是它下面的类型(在本例中,名为 Employee_t 的类型以及名为 Student_t 的类型)的超类型。子类型和超类型之间的关系是可传递的;这表示,子类型和超类型之间的关系在整个类型层次结构中都存在。因此,Person_t 也是 Manager_tArchitect_t 类型的超类型。

“部门”类型 BusinessUnit_t 被认为是一个不重要的类型层次结构。它是一个没有任何子类型的层次结构的根类型。