<aside> 💡

Een database bewaart gegevens in tabellen, op één centrale plek. Met SQL vraag je precies op wat je nodig hebt. Deze les gaat alleen over het ophalen van gegevens — toevoegen, wijzigen en verwijderen komen later.

</aside>

Wat is een database?

Een georganiseerde verzameling gegevens op één centrale plek, mét een systeem eromheen dat regelt dat meerdere programma's er tegelijk veilig bij kunnen, en dat razendsnel kan opzoeken wat je nodig hebt.

Wat het wel is: gegevens netjes in tabellen, met een taal (SQL) waarmee je precies opvraagt wat je nodig hebt, en waar honderd gebruikers tegelijk in kunnen schrijven.

Wat het niet is: een map vol bestanden of een Excel-sheet. Die kun je niet veilig door meerdere programma's tegelijk laten bijwerken, en zoeken doe je er handmatig in.

Hoe ziet een tabel eruit?

id naam klas
1 Flint 3XR1
2 Thyne 3XR1
3 Laura 3XR1

Een kolom is één eigenschap (verticaal). Een rij is één speler (horizontaal), een rij heet ook wel een record. Een cel is het snijpunt van één rij en één kolom, en bevat precies één waarde. De tabel zelf heeft een naam, hier spelers.

De primary key

<aside> ❓

Vraag: wat zou de primary key zijn in de studententabel van de schooldatabase?

</aside>

Elke rij krijgt een eigen, uniek nummer: de primary key. Dat klinkt overbodig, tot je één specifieke rij moet aanwijzen:

id naam klas
1 Daan 3XR1
2 Jens 3XR1
3 Daan 3XR1

Er zitten twee Daans in 3XR1. Zonder id kun je niet zeggen wélke van de twee je bedoelt, de database ziet twee keer exact hetzelfde. Met een id wijs je er precies één aan.

Die id verzin je trouwens niet zelf: de database deelt ze automatisch uit.

Dezelfde gegevens, steeds opnieuw

Stop je alles in één tabel, dan ga je jezelf herhalen. Kijk naar speler_naam en klas:

id speler_naam klas duur_seconden
1 Daan 3XR1 142
2 Casper 3XR1 98
3 Daan 3XR1 210

Splits de tabel — de foreign key

image.png

Alles wat bij de spéler hoort krijgt een eigen tabel. In resultaten blijft één verwijzing over: het id van die speler. Zo'n verwijzende kolom heet een foreign key.