Vrijwel ieder cms, forum of blog maakt gebruik van een database (of databank). Gelukkig nemen veel (open source en commerciële) softwarepakketten en controlepanelen je een heleboel handelingen met een database uit handen. Toch is het zeker niet verkeerd om je een beetje te verdiepen in databases. Alle informatie die je website inhoud geeft wordt daar namelijk opgeslagen en je website is tenslotte de basis van je online uitingen.
Ik wil je graag een paar dingen vertellen die je misschien niet wist over databases en daarna wil ik je een paar tips geven die je meteen kunt gebruiken op jouw website.
Wat is een database?
Een database is een verzameling gegevens die digitaal opgeslagen zijn zodat je ze snel kunt opvragen en/of bewerken.
Soorten databases
Er zijn heel veel database-omgevingen ontwikkeld, sommige ben je misschien al eens tegen gekomen: MySQL, Oracle of Access. Vrijwel altijd zul je zien dat deze databases werken volgens een relationeel model (zie de volgende paragraaf). Een artikel over databases zou niet volledig zijn zonder te melden dat er ook andere modellen zijn zoals het hiërarchisch model en het objectgeoriënteerde model (deze modellen zul je minder vaak tegenkomen). We gaan het hier verder uitsluitend hebben over relationele databases.
Relationele database
In een relationeel model is het mogelijk om twee tabellen met gegevens aan elkaar te koppelen. Een voorbeeld van zo'n koppeling wordt hieronder weergegeven. Het gaat hier om een tabel met gebruikers en een tabel met reacties. Elke reactie is te herleiden tot een gebruiker. Door een verzoek te doen aan de database is ook een lijst op te vragen met alle reactie van een gebruiker. Zelfs als de gebruikersnaam wijzigt, blijven alle koppelingen geldig.

Termen die je als webmaster zou moeten kennen:
Database: een verzameling tabellen die door middel van database-software toegankelijk zijn.
Tabel: een verzameling records.
Record: een groep gegeven over 1 onderwerp.
Veldwaarde: een van de waardes in een record.
Veldnaam: de naam van een veld in een record/tabel.
SQL: het verzoek (of de schrijfwijze ervan) om informatie in de database op te vragen of te bewerken.

Welke databases kun je zoal tegenkomen?
In een bedrijfsomgeving kom je misschien in aanraking met een Oracle-database. Voor internetsites zul je veel sneller MySQL- en Access-databases zien. MySQL draait vrijwel altijd in hostingomgevingen met een Linux-, Unix- of BSD-omgeving en steeds vaker ook Windows-servers. Access is alleen te vinden bij providers die hosting aanbieden op Windows-servers.
Veiligheid
Als een site informatie van gebruikers in een database stopt, dan kan er van alles fout gaan. Deze potentiële fouten moeten afgevangen worden door de database. Veel voorkomende fouten zijn:
- Problemen met 'moeilijke' tekens, als de charactersets van de hostingserver niet overeenkomen met die van de database-toepassing, dan kunnen bepaalde tekens verkeerd terugkomen. Probeer de characterset van je html-pagina, je programma, de server en de database indien mogelijk op elkaar af te stemmen.
- Klanten kunnen delen van een SQL-opdracht proberen in te voeren in formuliervelden. Als deze informatie ongewijzigd in het uiteindelijke SQL-verzoek geplaatst wordt, kan een hele site gehackt worden. Deze kwetsbaarheid is vergelijkbaar met het plakken van html/javascript in reacties of gastenboeken, maar kan nog grotere gevolgen hebben. Gebruik in zelfgemaakte php-scripts bijvoorbeeld de functie mysql_real_escape_string() om teksten veilig te maken voordat ze de database in gaan.
In het volgende deel wil ik meer vertellen over het gebruik van phpMyAdmin voor backups en migratie van databases.