Modelleerpatronen (1): Primitieven in tijd en ruimte

Modellering is een moeilijk vak. Aangezien ik er vaak met diverse mensen over discussieer en tevens ook wel de nodige ervaring mee heb deel ik via deze weg een aantal praktisch toepasbare patronen die ik heb gevonden de afgelopen jaren. Tevens biedt dit een mooi medium om hierover in bredere context door te discussiëren natuurlijk :).

Titel: Privitieven in tijd en ruimte

Doel: Expliciteren van je model, beter aansluiten op de werkelijkheid

Motivatie: Bij modelleren wordt erg vaak gegrepen naar abstracte / administratieve termen. Denk aan ‘factuur’, ‘bon’, ‘opdracht’, ‘tijdregistratie’. Veel van deze termen zijn terug te voeren op een meer natuurlijk passend concept zoals tijd en ruimte. Locaties zijn bijvoorbeeld formeel veel duidelijker vast te leggen als een primitief type van twee getallen die een geografische locatie aanduiden dan een meer ‘fuzzy’ concept als een Adres. Daarnaast kunnen adressen wisselen van opmaak, denk aan hernummering van postcodes, huisnummeringen of plaatsnamen. Met een volgens standaarden gedefinieerd concept als ‘locatie’ in je model kan je daar ook veel makkelijker zonder veel translaties van het ene naar het andere locatiestelsel views op definiëren (denk aan het kleuren van kaarten in GIS systemen).

Toepasbaarheid: Abstracte concepten die raken aan concrete primitieven, zoals locatie en tijdstip/datum (die laatste wordt vaak al automatisch ‘goed’ gedaan), maar denk ook aan meer volwassen en generieke standaarden als Burger Servicenummer bij personen en KvK nummer bij bedrijven. Daarnaast kunnen er heel goed primitieven zijn per branche, denk bijvoorbeeld aan bankrekeningnummers.

Voorbeeld van een model voor het toepassen van dit patroon:

Als hier een standaard genormaliseerd datamodel onder gelegd wordt betekent dit ofwel verlies van infomratie bij het verhuizen van een klant, ofwel veel dubbelingen van adresgegevens in de databases (elke order moet zijn eigen associatie of kopie krijgen naar het adres).

Voorbeeld van toepassing van dit patroon op de diverse associaties:

In het bovenstaande plaatje zien we dat we tijd en locatie heel expliciet hebben meegenomen in de modellering. Dit betekent dat met met name locatie een eigen ‘natural key’ wordt en dat we desnoods de fysieke coördinaten kunnen meenemen in diverse andere entiteiten.