Specialisatie en generalisatie

In het dagelijks spraakgebruik bedoelen we met specialiseren dat je je in het bijzonder gaat toeleggen op een onderdeel van een bepaald vak: je gaat ‘meer weten van minder’. Ditzelfde fenomeen komen we ook tegen binnen de informatievoorziening. We leggen bijvoorbeeld een aantal eigenschappen vast van klanten in het algemeen, maar hebben een bijzondere belangstelling voor de debiteuren onder hen. Dat zijn de klanten op wie we één of meer openstaande vorderingen hebben. Van hen leggen we, naast de algemene klantgegevens, een aantal extra eigenschappen vast die relevant zijn uit hoofde van hun hoedanigheid van debiteur. Het gaat dan bijvoorbeeld om gegevens over afgesloten betalingsregelingen, over het betalingsgedrag, over bijzondere incassomaatregelen enzovoort.

De debiteuren vormen zodoende een deelverzameling van de verzameling klanten, die zich onderscheiden, doordat ze het gedrag van de organisatie op een afzonderlijke manier bepalen; bijvoorbeeld in de functie ‘billing’. Daar spelen meer eigenschappen een rol, dan die van klanten in het algemeen.

Dit is per definitie een reden om bij je inventarisatie van objecten debiteuren te onderscheiden van klanten. Immers, aan het begin van dit hoofdstuk hebben we al gesteld dat objecten van dezelfde soort zijn als dezelfde soort eigenschappen relevant zijn.

De definitie van een specialisatie luidt:

objecttype A is een specialisatie van objecttype B als (en slechts als) de verzameling generieke eigenschappen van B een deelverzameling is van de verzameling generieke eigenschappen van A.

Een specialisatie ontstaat derhalve doordat je aan de objecten van een bepaald type nog extra eisen stelt. Voorbeeld: motorvoertuigen zijn voertuigen die bovendien door een motor worden voortbewogen. De verzameling generieke eigenschappen van de specialisatie bestaat uit:

Het omgekeerde van specialiseren noemen we generaliseren. In dat geval voegen we geen generieke eigenschappen toe aan een bepaalde verzameling objecten, maar laten er één of meer weg. Zo kunnen we het objecttype debiteur generaliseren tot het objecttype klant door de generieke eigenschap ‘op wie we één of meer openstaande vorderingen hebben’ te laten varen.

Een generalisatie definiëren we dan ook als:

objecttype A is een generalisatie van objecttype B als (en slechts als) B een specialisatie is van A.

Het concept van specialisatie en generalisatie verschaft je een instrument om vast te leggen in welke verschillende hoedanigheden de relevante objecten zich kunnen voordoen.

Een Venn-diagram maakt snel inzichtelijk in hoeverre die rollen overlappen en dus of er mogelijkheden zijn de gegevens die voor de verschillende rollen van belang zijn, met elkaar in verband te brengen of gemeenschappelijk te gebruiken. Specialiseren en generaliseren is daarom een uiterst nuttig instrumenten om de mogelijkheden van gemeenschappelijk gegevensgebruik in kaart te brengen.

Soms verwart men de begrippen classificatie en specialisatie. In beide gevallen gaat de belangstelling immers uit naar deelverzamelingen. Het verschil is:

Ze kunnen overigens beide tegelijkertijd voorkomen.

Lees verder: aggregatie