Een database is een gestructureerde verzameling van gegevens. We kunnen deze gegevens bekijken en bewerken met een Database Management System (DBMS).
Er zijn veel verschillende typen databases: relationele databases, NoSQL-databases, spatiale databases, graph databases, etc. In deze cursus ligt de focus op relationele databases, omdat vrijwel iedere website er een gebruikt.
De term 'relationeel' komt van E.F. Codd, die het gebruikte in de context van de verzamelingenleer (wiskunde). Een relatie is een verzameling, bijvoorbeeld:
Codd en zijn collega Boyce hebben de regels vastgelegd waaraan goed ontworpen relationele databases moeten voldoen. Deze regels heten de normaalvormen. Belangrijk: in een relationele database leg je van tevoren de structuur vast. Het DBMS zorgt ervoor dat je deze structuur aanhoudt.
Hoe noemen we het softwaresysteem waarmee je een database beheert, bevraagt en bewerkt?
Moet je bij een relationele database de structuur van tevoren vastleggen, of kun je die later bepalen?
NoSQL staat voor "Not Only SQL" -- niet "we gebruiken geen SQL". NoSQL-databases zijn flexibeler dan relationele databases: je kunt per element andere attributen opslaan. Vergelijk het met een Word-document waar je per element zelf de velden kiest, versus een Excelsheet waar iedereen dezelfde kolommen heeft.
Waar staat de afkorting NoSQL voor?
Bij welk type database kan de structuur per element verschillen: relationeel of NoSQL?
Databases hebben twee belangrijke voordelen boven een Excelsheet op een USB-stick:
Betrouwbaarheid: Als de stroom uitvalt terwijl je een bestand opslaat op USB, kan het bestand beschadigd raken. Bij een database is dat anders: als de bank-server crasht tijdens een pintransactie, garandeert de database dat de transactie volledig wordt uitgevoerd of volledig wordt teruggedraaid.
Integriteit: Data wordt altijd veilig, compleet en correct opgeslagen. Als de database zegt dat iets is opgeslagen, weet je 100% zeker dat het volledig en correct is opgeslagen, of volledig is genegeerd.
Je staat te pinnen en halverwege valt de stroom uit bij de bank. Wat zijn de twee mogelijke uitkomsten die een database garandeert?
Wat is het verschil tussen betrouwbaarheid en integriteit van een database?
Veel websites gebruiken een database om bijvoorbeeld inloggegevens op te slaan. Het proces werkt zo:
1. Je browser vraagt een pagina op (bijv. login.php)
2. De server stuurt een HTML-pagina met een formulier
3. Je vult het formulier in en stuurt het op (POST)
4. PHP verwerkt je gegevens en vraagt de database of ze kloppen
5. De database antwoordt, en PHP stuurt de juiste pagina terug
In deze cursus gebruiken we XAMPP: een programma dat een server op je computer installeert, zodat je lokaal met PHP en databases kunt werken.
Praat je browser rechtstreeks met de database wanneer je inlogt op een website?