De cardinaliteit van een join tussen twee tabellen is de numerieke relatie tussen rijen van de ene tabel en rijen in de andere. Veel voorkomende kardinaliteiten zijn één-op-één, één-op-veel en veel-op-veel.
Zie bijvoorbeeld een database met elektronische medische dossiers. Een dergelijke database zou tabellen als de volgende kunnen bevatten:
- Een
doctor
tabel met informatie over artsen. - Een
patient
tabel voor medische proefpersonen die een behandeling ondergaan. - Een
encounter
tabel met een vermelding voor elk ziekenhuisbezoek.
Natuurlijke relaties bestaan tussen deze entiteiten, zoals een ontmoeting waarbij veel artsen betrokken zijn. Er is een veel-op-veel relatie tussen records in doctor
en records in patient
omdat artsen veel patiënten hebben en patiënten veel artsen kunnen bezoeken. Er is een één-op-veel relatie tussen records in patient
en records in encounter
omdat patiënten veel ontmoetingen kunnen hebben en elke ontmoeting slechts één patiënt betreft.
Een “één-op-één” relatie wordt meestal gebruikt om een tabel in tweeën te splitsen om de informatie beknopter en begrijpelijker te maken. In het voorbeeld van het ziekenhuis zou een dergelijke relatie kunnen worden gebruikt om de eigen unieke professionele informatie van artsen gescheiden te houden van administratieve details.
In gegevensmodellering worden verzamelingen van gegevenselementen gegroepeerd in “gegevenstabellen” die groepen van gegevensveldnamen bevatten die “database-attributen” worden genoemd. De tabellen zijn met elkaar verbonden door “sleutelvelden”. Een “primaire sleutel” wijst een veld toe aan zijn “speciale volgorde tabel”. Bijvoorbeeld, het “Doctor Last Name” veld kan worden toegewezen als een primaire sleutel van de dokterstabel met alle mensen met dezelfde achternaam alfabetisch geordend op basis van de eerste drie letters van hun voornaam. Een tabel kan ook een foreign key hebben die aangeeft dat dat veld gekoppeld is aan de primary key van een andere tabel.
Een complex gegevensmodel kan honderden verwante tabellen omvatten. De computerwetenschapper Edgar F. Codd creëerde een systematische methode om relationele databases te ontleden en te organiseren. Codd’s stappen voor het organiseren van databasetabellen en hun sleutels wordt databasenormalisatie genoemd, waarmee bepaalde verborgen fouten in het databaseontwerp (verwijderanomalieën of updateanomalieën) worden vermeden. In de echte wereld leidt het proces van databasenormalisatie ertoe dat tabellen worden opgesplitst in een groter aantal kleinere tabellen.
In de echte wereld is datamodellering van cruciaal belang, omdat naarmate de gegevens volumineuzer worden, tabellen die door sleutels zijn verbonden, moeten worden gebruikt om het geprogrammeerd opvragen van gegevens te versnellen. Als een gegevensmodel slecht is opgezet, zal zelfs een computerapplicatiesysteem met slechts een miljoen records de eindgebruikers onaanvaardbare vertragingen in de reactietijd opleveren. Om deze reden is datamodellering een hoeksteen van de vaardigheden die een moderne software-ontwikkelaar nodig heeft.