Specialisation
An entity set may include subgrouping of entities that are distinct in some way from other entities in the set. The process of designating subgroups within an entity set is called specialisation.
These subgroupings become lower-level entity sets that have attributes or participate in relationships that do not apply to the higher-level entity set.
Generalisation
Generalisation is a containment relationship that exists between a higher-level entity set and one or more lower-level entity sets. This is a bottom-up design process, in which multiple entity sets are synthesised into a higher-level entity set on the basis of common features.
The terms specialisation and generalisation are used interchangeably.
Attribute inheritance
A lower-level entity set inherits all the attributes and relationship participation of the higher-level entity set to which it is linked. This is called attribute inheritance.
Lower- and higher-level entity sets are also referred to as subclasses and superclasses, respectively.
Constraints on specialisations/generalisations
To model an enterprise more accurately, the database designer may choose to place certain constraints on a particular generalisation/specialisation.
Disjoint/Overlapping specialisation
One type of constraint on specialisation specifies whether a specialisation is disjoint or overlapping.
-
Disjoint
A disjoint constraint requires that an entity belong to no more than one lower-level entity set. -
Overlapping
An overlapping constraint requires that an entity may belong to more than one lower-level entity sets within a single specialisation.
Completeness constraint
The completeness constraint specifies whether or not an entity in the higher-level entity set must belong to at least one of the lower-level entity sets within the generalisation.
-
Total
Each higher-level entity must belong to a lower-level entity set. -
Partial
Some higher-level entities may not belong to any lower-level entity set.
Partial generalisation is the default.
Aggregation
Aggregation is an abstraction through which relationships are treated as higher-level entities. By treating relationship as an abstract entity, relationships between relationships can be defined, thereby reducing unnecessary redundancy.