Een tweede problematische tabel
Home

Een tweede problematische tabel

Een tweede problematische tabel

Inleiding

Tabellen zoals we ze eerder hebben gezien, zijn niet bruikbaar voor (middel)grote systemen. Sleutels zullen toestaan op grotere schaal te werken.

Veronderstel dat je, in opdracht van Game Mania, een databank met videogames moet opstellen. Ze hebben momenteel volgende producten in hun inventaris en willen deze in hun nieuwe databank opslaan:

TitelOntwikkelaarPlatform
AnthemBiowarePS4
AnthemBiowareXBox One
AnthemBiowareWindows
Sekiro: Shadows Die TwiceFrom SoftwarePS4
Sekiro: Shadows Die TwiceFrom SoftwareXBox One
Sekiro: Shadows Die TwiceFrom SoftwareWindows
Devil May Cry 5CapcomPS4
Devil May Cry 5CapcomXBox One
Mega Man 11CapcomPS4
Mega Man 11CapcomXBox One
Mega Man 11CapcomNintendo Switch
Mega Man 11CapcomWindows
Mass Effect: AndromedaBiowarePS4
Mass Effect: AndromedaBiowareXBox One
Mass Effect: AndromedaBiowareWindows
Dark Souls 3From SoftwarePS4
Dark Souls 3From SoftwareXBox One
Dark Souls 3From SoftwareWindows

Hier is elke rij wel verschillend, maar toch is hier een probleem. Denk eraan dat we in onze definities zo precies mogelijk uitdrukken of iets CHAR, VARCHAR, NVARCHAR,... is, hoe veel karakters er in passen,... Dat is omdat een databank zuinig moet zijn voor goede performantie. Bovenstaande tabel is dat niet: er zijn heel veel stukken lange tekst die regelmatig terugkomen en die nemen elke keer heel wat bytes in.

Zuinig zijn is bovendien niet alleen belangrijk voor performantie, maar helpt ook fouten te voorkomen. Hoe vaker we een waarde volledig moeten uitschrijven, hoe groter de kans dat we eens een fout maken.

Het zou al zuiniger zijn elke game, elke ontwikkelaar en elk platform aan te duiden met een uniek identificatienummer. Dat bespaart heel veel ruimte tegenover wanneer we telkens de volledige tekst uit te schrijven. We kunnen bijvoorbeeld het volgende afspreken voor de titels:

Voor de ontwikkelaars spreken we af:

Voor de platformen:

Dan krijgen we voor de hele tabel:

TitelOntwikkelaarPlatform
111
112
113
221
222
223
331
332
431
432
434
433
511
512
513
621
622
623

Merk op dat we onze mappings van games / ontwikkelaars / platformen op getallen ook in drie tabelvoorstellingen met telkens 2 kolommen (de game/ontwikkelaar/het platform en het volgnummer) kunnen gieten. Dat is dan ook wat we zullen doen en we zullen de volgnummers aanduiden als primary keys die automatisch ophogen. Eens we dat gedaan hebben, kunnen we bijna op een heel efficiënte wijze data gaan combineren, maar we hebben ook vreemde sleutels of foreign keys nodig. Die komen in het volgende deel aan bod.

VN
2019-03-29 23:34:34