Smitche, kardinalitet i en relationel database er simpelt hen en betegnelse for hvordan tabellerne hænger sammen. Du sætter en database op for at hjælpe med at løse et problem i et 'domaine,' et begrænset udsnit af virkelighedens verden (eller en fantasi verden). Hvis du definerer et domaine der består af de tre 'entiteter' users, news, og comments på en sådan måde, at en news altid er skrevet af en bestemt user (altså ingen kollektivt forfatterskab) og at en kommentar altid er rettet til en bestemt news, så har du defineret to en-til-mange relationer eller 1-n kardinaliteter.
Lad os så antage, at du udvider dit domaine til også at inkludere nyheds kategorier. Hvis du vil klassificere nyheder så hver nyhed hører til en kategori, så har du defineret endnu en 1-n kardinalitet. Hvis du i stedet tillader, at en nyhed kan tilhøre flere kategorier (for eksempel en nyhed om ungdomsarbejdsløshed på Bornholm hører til kategorierne ungdom, beskæftigelse, og Bornholm) har du defineret en mange-til-mange eller n-m kardinalitet. For at holde styr på en sådan n-m kardinalitet skal du bruge en relationstabel.
Somme tider kan et billed sige mere end mange ord. Jeg har lavet dette billed
http://christianjorgensen.be/Billeder/Smitche.PNG . Det viser tre forskellige database design. Øverst til venstre viser jeg den simple situation med users, news, og comments. Nederst til venstre tilføjer jeg categories hvor hver nyhed hører til en bestemt kategori. Til højre viser jeg hvordan det ser ud, hvis hver nyhed kan tilhøre flere kategorier.
Jeg studser over, at du synes at gå så højt, næsten videnskabeligt, op i kardinaliteter. Det er simpelt hen et fremmedord for hvordan du vælger at lade dataerne hænge sammen i det domaine du definerer.
For at forvirre dig endnu mere, hvis du tillader at der kan være flere forfattere til en news (eller til videnskabelige artikler der tit har flere forfattere) så er du nødt til at modellere det som en n-m kardinalitet. Forfatter A kan have deltaget i news nummer 17, 23, og 47, og artikel 17 kan have A, C, og Q som forfattere. Så skal du have en relationstabel med to fremmednøgler, til forfatter og news, hvor du nu kan nøjes med en fremmednøgle til user i news tabellen.