Wat is een database en hoe werkt die?

Auteur: Gepubliceerd

In het kort: Een database is een geordende verzameling informatie die je kunt doorzoeken, aanvullen en bijwerken. Onder meer webwinkels, banken en reserveringssystemen gebruiken databases om gegevens over klanten, producten of transacties op te slaan. Speciale software beheert doorgaans de database en bewaakt ook de toegangsrechten en de correcte uitvoering van bewerkingen.

De database en de software die haar beheert

Je kunt een database vergelijken met een goed georganiseerd kaartsysteem. Elk gegeven heeft een vaste plek en vorm, waardoor je niet de hele verzameling hoeft door te nemen om de juiste informatie te vinden. Anders dan bij een papieren kaartsysteem kun je in een database ook snel gegevens combineren, bijvoorbeeld om alle bestellingen van een bepaalde klant te tonen.

De database zelf is niet hetzelfde als een databasebeheersysteem: het programma waarmee je gegevens opslaat, uitleest en controleert. Voorbeelden van zulke systemen zijn PostgreSQL, MySQL en SQLite. In het dagelijks taalgebruik wordt met ‘database’ vaak zowel de verzameling gegevens als de bijbehorende software bedoeld, maar technisch zijn het twee verschillende onderdelen.

Een gebruiker van een webwinkel of app werkt meestal niet rechtstreeks met de database. De gebruiker vult een formulier in of klikt op een knop, waarna de applicatie de juiste opdracht doorgeeft aan het databasebeheersysteem.

Hoe gegevens worden georganiseerd en opgezocht

In een relationele database worden gegevens opgeslagen in tabellen die aan elkaar gekoppeld kunnen worden. Een rij, ook wel een record genoemd, beschrijft één object, bijvoorbeeld een product. De kolommen bevatten de eigenschappen ervan, zoals de naam, prijs of het aantal beschikbare exemplaren.

Een vereenvoudigde producttabel kan er zo uitzien:

Product-IDNaamPrijsBeschikbare exemplaren
101Witte mok29 zł18
102Donkerblauwe mok32 zł7

Een primaire sleutel is een veld of een combinatie van velden waarmee een record uniek wordt geïdentificeerd. In dit voorbeeld is dat het product-ID. Ook als twee producten dezelfde naam hebben, kun je ze dankzij hun ID van elkaar onderscheiden.

Een aparte tabel kan bestellingen bevatten, en een volgende tabel de bestelregels met de product-ID’s en bestelde aantallen. Zulke koppelingen beperken onnodige herhaling van gegevens. Dat betekent niet dat gegevens nooit gekopieerd mogen worden: bij een bestelregel wordt doorgaans de prijs op het moment van aankoop opgeslagen, omdat een latere prijswijziging de verkoopgeschiedenis niet mag veranderen.

Voor het werken met relationele databases wordt vaak SQL gebruikt: een taal met opdrachten om gegevens uit te lezen en te wijzigen. Een query kan bijvoorbeeld producten opvragen waarvan minder dan tien exemplaren over zijn. Indexen kunnen het zoeken versnellen. Dit zijn aanvullende structuren die ongeveer werken als het trefwoordenregister in een boek. Ze nemen echter ruimte in en maken het bijwerken van gegevens zwaarder, dus je maakt er niet onbeperkt veel aan.

Wat er tijdens een aankoop in de database gebeurt

Stel je een winkel voor waar nog maar één exemplaar van een product op voorraad is. Twee mensen proberen dat vrijwel tegelijk te kopen. Alleen het getal ‘1’ op de website tonen is niet genoeg: het systeem moet bepalen welke aankoop kan doorgaan.

Daarbij helpt een transactie: een groep bewerkingen die als één geheel wordt behandeld. Het aanmaken van een bestelling en het verlagen van de voorraad kunnen zo worden uitgevoerd dat beide wijzigingen worden bevestigd, of geen van beide wordt opgeslagen. Goed ontworpen verwerking van transacties en gelijktijdige toegang voorkomt dat het laatste exemplaar aan twee mensen wordt verkocht.

Een database zorgt er echter niet automatisch voor dat de hele webwinkel correct werkt. De ontwikkelaar moet de regels goed vastleggen, bijvoorbeeld dat de voorraad niet negatief mag worden. Een betaling via een extern systeem vraagt om aanvullende verwerking van fouten en bevestigingen. Die betaling wordt niet vanzelf onderdeel van de lokale transactie alleen omdat ze bij dezelfde aankoop hoort.

Wat is het verschil tussen een database en een spreadsheet?

Een spreadsheet is geschikt voor handmatig samengestelde overzichten, berekeningen en analyses. Als één persoon een kleine lijst met kantoorinventaris bijhoudt, kan een spreadsheet eenvoudiger zijn dan een aparte applicatie met een database.

Een database is vooral nuttig wanneer:

De keuze hangt niet alleen af van het aantal rijen. Zelfs een klein reserveringssysteem kan een database nodig hebben, omdat het moet voorkomen dat hetzelfde tijdslot aan meerdere mensen wordt toegewezen. Omgekeerd kan een groot, eenmalig overzicht nog steeds prima in een spreadsheet worden geanalyseerd.

Een type database kiezen en je gegevens beschermen

Niet alle databases werken met gekoppelde tabellen. NoSQL-databases is een verzamelnaam voor verschillende oplossingen. Daaronder vallen documentdatabases, die informatie opslaan als documenten met een bepaalde structuur, en sleutel-waardedatabases, die een waarde aan een unieke sleutel koppelen. Ze zijn niet per definitie sneller of beter dan relationele databases: de keuze hangt af van de manier waarop gegevens worden opgeslagen en uitgelezen.

Voor een gebruikelijke applicatie die klanten, bestellingen en afrekeningen verwerkt, is een relationele database vaak een verstandig uitgangspunt. Als je een kant-en-klaar contentmanagementsysteem of webwinkelpakket gaat gebruiken, controleer dan eerst de eisen van de leverancier. De software bepaalt doorgaans welke databasebeheersystemen en versies worden ondersteund.

Welke technologie je ook gebruikt, beperkte toegangsrechten, updates en back-ups zijn noodzakelijk. Met een back-up kun je gegevens herstellen na een storing of vergissing, maar je moet controleren of dat werkt door een proefherstel uit te voeren. Alleen de mededeling dat er ‘dagelijks een back-up wordt gemaakt’ bewijst niet dat je daarmee een werkende database kunt herstellen.

Schrijf voordat je een hulpmiddel kiest op welke gegevens je wilt opslaan, wie ze gaat wijzigen en welke fouten het systeem moet tegenhouden. Met zo’n korte beschrijving kun je beoordelen of een spreadsheet of kant-en-klare applicatie volstaat, of dat je een eigen oplossing met een database nodig hebt.

Lees ook

Lees hoe PHP-FPM PHP-verzoeken verwerkt, verschilt van een webserver en hoe je processen afstemt op verkeer en hostingcapaciteit.
Ontdek hoe BIND als open DNS-serversoftware domeinen beheert, welke rollen het vervult en wanneer zelf beheren zinvol is.
Lees wat het Poolse REGON-register en -nummer betekenen, hoe ze verschillen van NIP en KRS en hoe je bedrijfsgegevens controleert.