Datamodellering

Creative Commons License
This work is licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0
International License
.

Auteur

John Val
Inleiding Database Efficiëntie Relationeel model

Inleiding

In het hoofdstuk Data Flow heb je geleerd om eisen aan een werkplan om te zetten in een data flow diagram. Je hebt dan een overzicht gemaakt van alle gegevens die voor processen nodig zijn en welke informatie moet worden geleverd. In dit hoofdstuk gaan je leren hoe je de gegevens organiseert in een datamodel. Garagebedrijf Nieuwenhuis zal daarbij onze kapstok zijn. Hoe slaan we al die gegevens over klanten, bestellingen, medewerkers, producten op een nette manier op? Zo als je straks zult zien wordt het proces van data modelleren ook ondersteund door een grafische techniek, het entiteit relatie diagram.

Het datamodel vormt de basis van het maken van de database. Het is van groot belang eerst een volledig en efficiënt model te maken voordat de database wordt gemaakt.

In heel veel gevallen kunnen verzamelde gegevens worden weergegeven in lijsten, b.v. een lijst met gegevens van personen (leerlingen, docenten, personeel, leden van de vereniging, etc...), een lijst van producten in een webwinkel (deurknoppen, telefoons, reizen, tatoo's), een lijst van bestelde producten door een klant, een lijst van metingen in een onderzoek, etc... Kortom waarvan kan je eigenlijk geen lijstjes maken? Omdat lijsten zo veel vaak voorkomen is het niet verwonderlijk dat in de informatie technologie er speciale technieken voor de opslag van dit soort gegevens zijn ontwikkeld. De verzamelnaam voor deze technieken is database techniek.

Database techniek

Database techniek is dus de techniek die zich bezighoudt met de opslag van gegevens die als lijsten kunnen worden weergegeven. Zoals we bij "Big Data" al hebben gezien kan de hoeveelheid gegevens enorm zijn. Twee zaken zijn dan ook erg belangrijk:

  1. De gegevens moeten efficiënt worden opgeslagen.
  2. De gegevens moeten snel kunnen worden verwerkt.

Deze twee punten lijken hetzelfde te beogen. Efficiënter werken betekent toch ook sneller werken, niet waar? Niet waar dus. Beschouw namelijk de volgende analogie: De monteur van de garage moet een reparatie aan een auto verrichten. Hij heeft twee opties. 1) Hij kan de reparatie snel doen zodat de klant over een uur de auto weer tot zijn beschikking heeft, maar hij weet ook dat dan de kwaliteit niet zo goed is en het probleem waarschijnlijk op korte termijn weer terugkomt. 2) Hij kan wat grondiger te werk gaan, een onderdeel helemaal uit elkaar halen er nieuwe onderdelen in plaatsen. Een klus waar hij toch wel wat meer tijd voor kwijt is, maar waarvan hij weet dat het probleem zich, tot dat de auto door ouderdom op de schroothoop beland, niet meer zal voordoen. Kortom snelheid en efficiëntie botsen hier. Soortgelijke problemen doen zich ook voor bij database techniek.

Voor bedrijven met heel veel gegevens (e.g. Google, Facebook, Apple. CERN, NASA) zijn beide punten heel belangrijk. Met de huidige snelheid van computers is het tweede punt voor de meeste kleine- tot middelgrote bedrijven niet zo belangrijk. De essentie ligt dan vooral bij het efficiënt opslaan van gegevens. In dit hoofdstuk zetten we dit meest voorkomende punt dan ook centraal.

Efficiëntie

Efficiëntie van de opslag van data is in de meeste gevallen dus het belangrijkst. Nu is efficiëntie weer een heel brede term, die nadere specificatie behoeft. Omdat er steeds grotere harde schijven komen is de opslagcapaciteit voor de meeste bedrijven enorm groot. Gegevens over klanten, producten etc. zijn voornamelijk tekst en van tekst kan verschrikkelijk veel worden opgeslagen op een schijf van 1 Terrabyte. Beeldmateriaal vergt veel meer opslagruimte, evenals de opslag van bijvoorbeeld de metingen in een experiment bij de deeltjesversneller in het CERN. In deze laatste twee voorbeelden is het van belang de opgeslagen gegevens in omvang zo klein mogelijk te houden. Dat is één vorm van efficiëntie.

De vorm van efficiëntie waar wij ons hier verder mee bezig houden is een goed ontwerp van de dataopslag. Daar gelden de volgende principes voor:

  1. Het eerste principe is dat meervoudige opslag van dezelfde data (= redundante opslag) fout is, niet alleen omdat het meer ruimte vergt, maar belangrijker is dat het de kans vergroot op fouten en inconsistenties (= niet met elkaar overeenkomend). Een fout die gemaakt kan worden is dat niet alle gegevens worden verwijderd. Wordt als fout niet op alle plaatsen een wijziging doorgevoerd, dan kan dat leiden tot de inconsistentie dat b.v. persoon A volgens de dataopslag op twee verschillende adressen tegelijk woont.
  2. Het tweede principe is dat van de volledigheid en de correctheid van de gegevens. Dit is natuurlijk noodzakelijk als er rapporten moeten worden geleverd die aan de eisen van informatie voldoen.

De modellering die we hieronder aanbieden is die voor relationele databases, voor andere databases verschilt dit echter niet heel veel.

In het proces van de analyse om tot een logisch model te komen zijn er twee soorten consultanten nodig:

Bij kleine projecten is er één consultant die beide doet.

Elementen in een entiteit relatie diagram (ERD).

Relationeel model

In het modelleren van een relationele database moeten een aantal stappen worden gedaan. Je weet nog niet wat een relationeel model is, maar daar kom je straks achter. We maken de stappen op basis van de casus "Garagebedrijf Nieuwenhuis", die we al bij het hoofdstuk Data Flow zijn tegen gekomen.