Het gebruik van het ER-model voor grotere gegevens zorgt voor veel complexiteit bij het ontwerpen van een databasemodel. Om de complexiteit te minimaliseren werden generalisatiespecialisatie en aggregatie in het ER-model geïntroduceerd. Deze werden gebruikt voor data-abstractie. Waarbij een abstractiemechanisme wordt gebruikt om details van een reeks objecten te verbergen.
Generalisatie
Generalisatie is het proces waarbij gemeenschappelijke eigenschappen uit een reeks entiteiten worden geëxtraheerd en daaruit een gegeneraliseerde entiteit wordt gecreëerd. Het is een bottom-upbenadering waarbij twee of meer entiteiten kunnen worden gegeneraliseerd naar een entiteit op een hoger niveau als ze enkele kenmerken gemeen hebben.
Generalisatie Voorbeeld: STUDENT en FACULTY kunnen worden gegeneraliseerd naar een entiteit op een hoger niveau, genaamd PERSON, zoals weergegeven in het onderstaande diagram. In dit geval worden gemeenschappelijke kenmerken zoals P_NAME en P_ADD onderdeel van een hoger entiteit (PERSOON) en gespecialiseerd attributen zoals S_FEE onderdeel worden van een gespecialiseerde entiteit (STUDENT).
Specialisatie
Bij specialisatie wordt een entiteit op basis van haar kenmerken opgedeeld in subentiteiten. Het is een top-downbenadering waarbij de entiteit op een hoger niveau zich specialiseert in twee of meer lagere niveaus entiteiten .
Specialisatie Voorbeeld: een EMPLOYEE-entiteit in een werknemersbeheersysteem kan worden gespecialiseerd in DEVELOPER TESTER etc. In dit geval worden algemene attributen zoals E_NAME E_SAL etc. onderdeel van een hogere entiteit (EMPLOYEE) en worden gespecialiseerde attributen zoals TES_TYPE onderdeel van een gespecialiseerde entiteit (TESTER).
Erfenis
Het is een belangrijk kenmerk van generalisatie en specialisatie. Bij specialisatie wordt een entiteit op een hoger niveau verdeeld in sub-entiteiten op een lager niveau die de attributen ervan erven. Bij generalisatie worden vergelijkbare entiteiten op een lager niveau gecombineerd tot een entiteit op een hoger niveau die gemeenschappelijke attributen bevat. In beide gevallen zorgt overerving ervoor dat subentiteiten de eigenschappen van de bovenliggende entiteit kunnen hergebruiken.
- Kenmerkovererving: Het maakt het mogelijk dat entiteiten op een lager niveau de attributen van entiteiten op een hoger niveau erven en vice versa. In het diagram is de Auto-entiteit een erfenis van de Voertuig-entiteit. Auto kan dus attributen van het Voertuig verwerven. Voorbeeld: Auto kan het modelkenmerk Voertuig verkrijgen.
- Relatie-erfenis : Subentiteiten nemen ook relaties over van de bovenliggende entiteit.
- Overheersende erfenis : Subentiteiten kunnen hun eigen kenmerken of gedragingen overschrijven of toevoegen die verschillen van de bovenliggende entiteiten.
- Participatievererving: Overerving van participatie in ER-modellering verwijst naar de overerving van participatiebeperkingen van een entiteit op een hoger niveau (superklasse) naar een entiteit op een lager niveau (subklasse). Het zorgt ervoor dat subklassen zich aan dezelfde deelnameregels in relaties houden, ook al worden attributen en relaties zelf anders overgeërfd.
Voorbeeld van relatie Voorbeeld: In het diagram heeft de Voertuigentiteit een relatie met de Cyclusentiteit, maar deze krijgt niet automatisch de relatie zelf met de Voertuigentiteit. Participatie-overerving heeft alleen betrekking op de erfenis van participatiebeperkingen en niet op de feitelijke relaties tussen entiteiten.
Aggregatie
- Een ER-diagram is niet in staat de relatie tussen een entiteit en een relatie weer te geven, wat in sommige scenario's nodig kan zijn.
- In die gevallen wordt een relatie met de overeenkomstige entiteiten samengevoegd tot een entiteit op een hoger niveau.
- Aggregatie is een abstractie waarmee we relaties kunnen weergeven als entiteitensets op een hoger niveau.
Aggregatie Voorbeeld: Een werknemer die aan een project werkt, heeft mogelijk bepaalde machines nodig. Er is dus een REQUIRE-relatie nodig tussen de relatie WORKS_FOR en entiteit MACHINERY. Met behulp van aggregatie wordt de WORKS_FOR-relatie met de entiteiten EMPLOYEE en PROJECT samengevoegd tot één enkele entiteit en wordt de relatie REQUIRE gecreëerd tussen de samengevoegde entiteit en MACHINERY.
Vertegenwoordigen van aggregatie via schema
Volg deze stappen om aggregatie in een relationeel schema weer te geven:
1. Maak een schema voor de geaggregeerde relatie
- Dit wordt behandeld als een entiteitset.
- Het bevat de primaire sleutels van de deelnemende entiteiten in de basisrelatie.
- Het bevat ook alle beschrijvende kenmerken van de basisrelatie.
2. Schema maken voor de relatie op een hoger niveau (aggregatie)
- Dit schema omvat: De primaire sleutel van het geaggregeerde relatieschema.
- De primaire sleutel van de geassocieerde entiteit waarop deze betrekking heeft.
- Eventuele aanvullende beschrijvende kenmerken van deze relatie op een hoger niveau.