Aggregatie

Aggregeren betekent samenvoegen. In de context van de informatievoorziening kennen we geaggregeerde gegevens in de betekenis van ‘opgetelde’ gegevens: gegevens die een beeld geven van een bepaald aandachtsgebied als geheel (bijvoorbeeld een bedrijf) en die zijn ontstaan door de gegevens over de diverse onderdelen (bijvoorbeeld afdelingen) samen te voegen.

Je komt het woord ook tegen in de term ‘aggregatieniveau’: de mate waarin je de bedrijfsonderdelen in je beschouwing samenvoegt tot één geheel. Als de mate van samenvoeging laag is (‘laag aggregatieniveau’), beschouw je het bedrijf bijvoorbeeld op het niveau van teams binnen een afdeling. Op het hoogste aggregatieniveau zie je zelfs de afzonderlijke hoofdafdelingen, directies of divisies niet meer terug en beschouw je het bedrijf als één geheel, in relatie tot zijn omgeving.

In de context van objectmodellering betekent aggregatie het definiëren van een objecttype als een verband met of tussen één of meer objecttypen.

Aggregeren: samenvoegen van objecten.

Veronderstel, we willen het gedrag van de voorraadhoogte in de tijd volgen. We willen de voorraadhoogte op de ijkmomenten dan zien als verschillende eigenschappen van hetzelfde object: de voorraad. Maar wat zijn voorraden dan voor dingen? Als we de voorraadhoogte willen bepalen, vergelijken we meestal geen appels met peren.

Daarom is het niet ongewoon dat we de voorraadhoogte per goederensoort bepalen. De voorraadhoogte op een bepaald moment wordt dan gezien als een eigenschap van ‘goederensoort’. Maar veronderstel nu ook eens dat we de voorraadhoogte per magazijn willen registreren, dus hoeveel goederen we van een zekere soort per magazijn hebben opgeslagen. Blijkbaar willen we per magazijn en per artikelsoort het verloop van de voorraadhoogte in de tijd kunnen volgen. Misschien willen we over de combinatie ‘goederensoort’ en ‘magazijn’ ook nog andere eigenschappen registreren, bijvoorbeeld de maximale hoeveelheid die er opgeslagen kan worden of de aan te houden norm.

Op grond van deze overwegingen definiëren we ‘voorraad’ bijvoorbeeld als: ‘de opslag van artikelen van een erkende soort in een daarvoor geschikt magazijn’. ‘Voorraad’ is dan te beschouwen als een verband tussen enerzijds een goederensoort en anderzijds een magazijn. Het verband tussen beide beschrijf je als ‘waarvan goederen worden opgeslagen in’.

Doordat we geïnteresseerd zijn in de eigenschappen van dit verband, is het verband zelf ook gespreksonderwerp, het wordt ‘geobjectiveerd’. Van een voorraad wil je dan, naast de relatie met de ‘samenstellende’ objecten – welke goederensoort en welk magazijn –, bijvoorbeeld ook eigenschappen kennen zoals de actuele voorraadhoogte, de economische voorraadhoogte, de voorraadbeheerder en de uiterste bewaartermijn. Een voorraad is dus als het ware een combinatie, de samenvoeging van een magazijn met een goederensoort.

We definiëren een aggregatie als volgt:

een objecttype A is een aggregatie van andere objecttypen (zeg B, C...) als (en slechts als) elk object van type A een verband representeert tussen een object van type B en een object van type C enzovoort.

Een aggregatie is dus niet per se een verband tussen precies twee objecten; het kunnen er ook drie of meer zijn. Ook een eigenschap van één object die onderwerp van gesprek is, noemen we een aggregatie. Een voorbeeld van zo’n eigenschap is het ontslag van medewerkers. Daarover wil je bijvoorbeeld vastleggen wanneer en waarom het heeft plaatsgevonden en of er een vertrekpremie is betaald. Dit objectiveert de eigenschap ‘ontslagen zijn’ tot het objecttype ‘ontslag’.

Aandacht De objecttypen van de aggregatie hoeven niet allemaal in het objectmodel terug te vinden te zijn.

Als een objecttype A is gedefinieerd als een aggregatie van het objecttype B en het objecttype C, dan representeert elk object van het type A dus een verband van een object van het type B met een object van het type C. Met andere woorden: er kan geen object van het type A bestaan zonder dat er ook objecten van het type B en C zijn, waarmee het object van het type A een verband heeft.

Ook een verband tussen objecten van dezelfde soort kan onderwerp van gesprek zijn. Bijvoorbeeld objecten van het type ‘huwelijk’ zouden we kunnen definiëren als een wettelijk geregelde samenlevingsvorm tussen twee personen. Evenals bij het hiervoor genoemde objecttype ‘ontslag’ is hier sprake van een verband waarin slechts één objecttype betrokken is. Elk huwelijk verbindt twee objecten (van het type ‘persoon’) met elkaar.

Aggregaties verschillen van elkaar als:

  1. de betrokken objecten verschillen. Een verband kan niet bestaan zonder de betrokken objecten: een oeververbinding kan niet bestaan zonder oevers, een huwelijk niet zonder echtelieden. Maar: verschillende oevers, andere oeververbinding en verschillende echtelieden, ander huwelijk. Bovendien: als één van de objecten wegvalt uit het verband, is het verband ten einde. Een verband kan omgekeerd wel eindigen zonder dat dit het ‘einde’ van de betrokken objecten betekent: het einde van een huwelijk betekent immers niet per se het einde van de partners. Je moet het verband dus niet vereenzelvigen met de betrokken objecten: het is een ander ding. Aggregaties representeren abstracte objecten, zoals verbintenissen of gebeurtenissen, bijvoorbeeld leveringen;
  2. de aard van het verband verschilt: een dienstverband tussen twee personen is een ander verband dan een huwelijk tussen dezelfde personen. Tussen dezelfde objecten kunnen tegelijkertijd meer verbanden bestaan, al dan niet van hetzelfde type;
  3. de rol die de objecten in het verband vervullen, verschilt: een dienstverband tussen twee personen, waarbij de één de rol van werkgever vervult en de ander die van werknemer, is een ander dienstverband dan dat waarbij de rollen omgedraaid zijn. Beide kunnen bovendien tegelijkertijd voorkomen.
Vervolg Verder met doorsnede en vereniging