Inleiding databases¶
Je gebruikt elke dag allerlei databases:
je bekijkt je bankrekening via de bank-app, en je maakt een bedrag over: hierbij gebruik je de database van de bank met al je overboekingen (transacties).
je houdt de administratie bij van je sportvereniging, met daarin de namen en adressen van de leden, de contributie, en de wedstrijdresultaten;
je zoekt op welke cijfers je gehaald hebt voor geschiedenis, dit schooljaar. Hierbij gebruik je (via een web-app) de database met de cijferadministratie van je school.
je maakt een afspraak in een agenda die je deelt met je familie. Via deze agenda weet je welke familie-activiteiten gepland zijn.
Dit is maar een kleine greep uit de database-toepassingen waar je dagelijks mee te maken hebt.
De databases in deze toepassingen hebben een aantal eigenschappen:
het gaat om verzamelingen gestructureerde gegevens;
het gaat mogelijk om erg grote verzamelingen gegevens;
je kunt de gegevens op allerlei manieren doorzoeken;
de gegevens worden door veel gebruikers geraadpleegd, vaak gelijktijdig;
soms worden dezelfde gegevens door verschillende toepassingen gebruikt;
de gegevens worden vaak gebruikt voor het nemen van beslissingen.
Gestructureerde gegevens. Een database bevat gegevens die dezelfde vorm en structuur hebben. Deze geef je vaak in een tabelvorm weer - denk aan een spreadheet, een agenda, of een boekhoudjournaal.
Flexibel doorzoeken. Je kunt op allerlei manieren zoeken in je lijst met overboekingen, bijvoorbeeld om na te gaan hoeveel je aan kleding uitgegevens hebt het afgelopen jaar. Je kunt opzoeken welke cijfers je voor wiskunde gehaald hebt, of voor welke vakken je onvoldoendes gehaald hebt.
Meerdere gebuikers, soms tegelijkertijd. Je bankgegevens, je cijfers of je gedeelde agenda kunnen ook door anderen bekeken worden, mogelijk op hetzelfde moment. Als iemand deze gegevens verandert, dan wil je dat ook direct kunnen zien.
Grote verzamelingen gegevens. De administratie van een sportvereniging met 20 leden kun je nog op papier bijhouden, of in een spreadsheet. Maar bij veel toepassingen gaat het om duizenden of miljoenen gegevens, van evenzoveel gebruikers. Je wilt dan nog steeds snel kunnen zoeken.
Gegevens voor beslissingen. De gegevens van je bankrekening vertellen je welke financiële speelruimte je de komende tijd hebt; of waar je de meeste mogelijkheden hebt om te bezuinigen. De afspraken in je agenda vertellen je hoe de komende dagen er (in grote lijnen) uitzien, en wat er van je verwacht wordt. De contributiegegevens van je vereniging gebruik je voor het versturen van rekeningen en misschien van aanmaningen. In al deze voorbeelden gebruik je de gegevens uit de database voor het nemen van beslissingen, of voor het uitvoeren van een “proces” zoals het innen van contributie.
Voorbeeldtoepassing¶
Als voorbeeld gebruiken we een (web)toepassing waarmee gebruikers zich kunnen inschrijven voor verschillende events - zoals bijvoorbeeld schaakwedstrijden. Een deelnemer moet zich eerst als lid aanmelden, met voornaam, achternaam en email. Een aangemeld lid kan zich bij verschillende events (op verschillende data) inschrijven. Bij inschrijving maakt een lid een keuze uit de verschillende maaltijden bij deze event. Een lid kan zijn/haar inschrijvingen achteraf aanpassen. Een event-organisator kan een overzicht krijgen van de inschrijvingen voor een event.
De verschillende events zijn met hun gegevens (datum, maaltijdkeuze) “hard gecodeerd” in de toepassing. (Deze hoeven niet in de database opgenomen te worden.)
Web-applicatie
Een uitwerking van dit voorbeeld is te vinden op glitch.com:
Je kunt daar de database-operaties vinden als onderdeel van een Python-Flask web-applicatie. Je kunt op glitch.com een eigen “remix” maken van deze toepassing, met eigen uitbreidingen en variaties.
Opdrachten¶
Geef drie voorbeelden van toepassingen uit je omgeving waarin databases gebruikt worden; geef daarbij aan welk soort gegevens in de database opgeslagen wordt.
Geef voor één van die voorbeelden aan welke van de bovengenoemde elementen een rol spelen, en op welke manier.
Toetsvragen¶
Welke van de onderstaande elementen zijn typisch voor een database (en kom je niet bij andere programma’s tegen)?
gegevens blijven bewaard (“persistent”) als het programma niet meer actief is;
opslaan en terugzoeken van gestructureerde gegevens;
zoeken in mogelijk grote verzamelingen gestructureerde gegevens;
gegevens zijn in tabelvorm opgeslagen;