Database Management

Extended Entity-Relationship Model[]

The Extended Entity-Relationship Model is a more abstract and high-level model that extends the E/R model to include more types of relationships and attributes, and to more clearly express constraints. All of the usual concepts contained in the E/R-model are also included in the EE/R model, along with additional concepts that cover more semantic information. These additional concepts include generalization/specialization, union, inheritance, and subclass/superclass.

Generalization and Specialization[]

You can think of generalization as developing a diagram from the bottom up, whereas you can think of specialization as taking a top down approach to development. These two processes are used to incorporate more meaning into EER models.

Specialization is used when you want to add additional information to an existing entity-type. This can include adding attributes or relationships to other entity-types that are not present in the general type. An entity of the specialized type is always also an entity of the general type. Often times you have multiple specialized types that may be disjoint or not, meaning an entity can be only one of the subtypes or can be an instance of multiple. In the disjoint case and when the specialized types partition the possible entities for the general type, we call that a partition.

Example: Books can be specialized into monographies or anthologies.

Generalization is used when you have a collection of entity-types that have some characteristic in common and you want to factor out this commonality into a saparate entity-type. The common attributes get transferred to the generalized type.

Example: Cars and trucks can be generalized to vehicles.

Important to note is that in this case a vehicle is either a car or a truck, but a car might not be a vehicle (in this model). This is what makes generalization different from specialization. With specialization, an entity of the specialized type always also is an entity of the general type.


A union (also known as a category) is a collection of super-classes that acts as a union between objects of different entity types. Instances of the subclass will inherit the attributes of only one of the super-classes, depending on the union that it belongs to.