图: 类型层次结构的示例
CREATE ROW TYPE person_t ( name VARCHAR(30) NOT NULL, address VARCHAR(20), city VARCHAR(20), state CHAR(2), zip INTEGER, bdate DATE );
CREATE ROW TYPE employee_t ( salary INTEGER, manager VARCHAR(30) ) UNDER person_t;
CREATE ROW TYPE sales_rep_t ( rep_num INT8, region_num INTEGER, commission DECIMAL, home_office BOOLEAN ) UNDER employee_t;
sales_rep_t 类型包含 12 个字段:name、address、city、state、zip、bdate、salary、manager、rep_num、region_num、commission 和 home_office。
employee_t 和 sales_rep_t 类型的实例都继承对 person_t 类型所定义的所有 UDR。 对 employee_t 定义的其他任何 UDR 都自动应用于 employee_t 类型的实例,并应用于其子类型 sales_rep_t 的实例,但不应用于 person_t 的实例。
图: 树结构类型层次结构的示例
任何层次结构的最顶部的类型都称为根超类型。 在图 2 中,person_t 是层次结构的根超类型。除根超类型以外,层次结构中的任何类型都有可能同时既作为超类型又作为子类型。例如:customer_t 是 person_t 的子类型和 us_customer_t 的超类型。在层次结构中位于较低层的子类型包含根超类型的属性,但不直接从根超类型继承属性。例如:us_customer_t 只有一个超类型 customer_t,但由于 customer_t 本身是 person_t 的子类型,所以,customer_t 从 person_t 继承的字段和例程也由 us_customer_t 继承。