A generalization hierarchy is a form of abstraction that specifies that two or more entities that share common attributes can be generalized into a higher level entity type called a supertype or generic entity.
The lower-level of entities become the subtype, or categories, to the supertype. Subtypes are dependent entities.
Generalization occurs when two or more entities represent categories of the same realworld object.
We can think of a reverse process of abstraction in which we suppress the differences among several entity types, identify their common features, and generalize them into a single superclass of which the original entity types are special subclasses
For example, Wages_Employees and Classified_Employees represent categories of the same entity, Employees. In this example, Employees would be the supertype; Wages_Employees and Classified_Employees would be the subtypes.
Subtypes can be either mutually exclusive (disjoint) or overlapping (inclusive). A mutually exclusive category is when an entity instance can be in only one category.
The above example is a mutually exclusive category. An employee can either be wages or classified but not both.
An overlapping category is when an entity instance may be in two or more subtypes.
An example would be a person who works for a university could also be a student at that same university.
The completeness constraint requires that all instances of the subtype be represented in the supertype.
Generalization hierarchies can be nested. That is, a subtype of one hierarchy can be a supertype of another.
The level of nesting is limited only by the constraint of simplicity. Subtype entities may be the parent entity in a relationship but not the child.