Database theorie Inleiding Veel mensen roepen altijd dat databases moeilijk te begrijpen zijn, en dat klopt. Toch hebben we in het dagelijks leven super vaak met databases te maken. Hoe weet te assistent van de huisarts nou zo snel welke neusspray meneer Tanis gebruikt? En hoe kan het dat ze bij Intratuin mijn adres al weten terwijl ik alleen mijn naam en geboortedatum heb gegeven?
Wat is een database? Een database is eigenlijk een grote IKEA kast. In die kast kun je heel veel spullen kwijt, bijvoorbeeld al je tijdschriften. Het zou onhandig zijn om al die tijdschriften zomaar los in de kast te gooien. Zo kun je ze nooit gemakkelijk terugvinden. Daarom kiezen we ervoor om de tijdschriften in lectuurbakken te plaatsen. Zo hebben we er een voor de Quest, eentje voor de Autoweek en een voor de Girlz! Je kunt je ook voorstellen dat een bedrijf zoals IKEA de kasten gebruikt om informatie in op te slaan. In de kast staan multomappen met orders (bestellingen) van diverse afdelingen.
De relationele database De Familie Doorzon uit Wassenaar woont op de Tulpendreef. Ze hebben onlangs een bank besteld van het type KRAMFORS. Ze willen ook zes LACK tafeltjes in verschillende kleuren. Ze willen graag dat de artikelen thuisbezorgd worden. Als we al deze informatie in een tabel zetten ziet het er zo uit: Klant Doorzon
Adres Tulpendreef 9
Woonplaats Wassenaar
Telefoon 02023451009
Stoelen -
Teubel
Dahliaweg 12
Ridderstad
01188990012
-
Tafels LACK, 7 stuks (div. kleuren) -
Kasten -
EXPEDIT, 8 vakjes in zwartbruin
Banken KRAMFORS, 1x bloemenmotief -
Opbergers -
-
Zoals je ziet wordt het nogal een onoverzichtelijk geheel! Een slimme medewerker besluit om alle klantgegevens in een rode multomap te stoppen. Alle orders komen in een blauwe map.
1
Nu zijn de tabellen een stuk gemakkelijker om te lezen. Een tabel in de rode map zou er dan zo uitzien: Naam Doorzon Teubel Doorzon
Adres Tulpendreef 9 Dahliaweg 12 Petunialaan 13
Woonplaats Wassenaar Ridderstad Maaskantje
Telefoon 020-23451009 011-88990012 0187-608934
Nu is het alleen zo dat er nog een andere familie Doorzon bestaat, namelijk in Maaskantje! Hoe weten de medewerkers nu dat de KRAMFORS bank en de zeven LACK tafeltjes naar de familie in Wassenaar moeten en niet in Maaskantje moeten worden bezorgd? Simpel, we geven elke klant een uniek nummer... Een klantnummer. Klant nr. K001 K002 K003
Naam Doorzon Teubel Doorzon
Adres Tulpendreef 9 Dahliaweg 12 Petunialaan 13
Woonplaats Wassenaar Ridderstad Maaskantje
Telefoon 020-23451009 011-88990012 0187-608934
Klanten tabel
Order tabel
Als we in de lijst met orders in de blauwe map nu óók het klantnummer vermelden hoeft de bezorger alleen maar even in de rode map te kijken voor het adres. Makkelijk, toch? Order nr.
Klant nr.
Stoelen
Tafels
Kasten
Banken
Opbergers
O-001
K001
-
LACK, 7 stuks
-
KRAMFORS, 1x bloemenmotief
-
O-002
K002
-
-
EXPEDIT, 8 vakjes in zwartbruin
-
-
O-003
K003
-
BJURSTA, eiken
-
-
-
Wat we eigenlijk hebben gedaan is wat met een moeilijk woord een "relationele database" heet ontworpen. In de mappenkast van IKEA staan verschillende mappen, het klantnummer legt een link (relatie) tussen de klant informatie in de rode map en de orders 2
in de blauwe. Je noemt het order nummer in de blauwe map de primaire sleutel, in de rode map is het klantnummer de primaire sleutel. Nog een stapje verder. Je ziet dat in de blauwe map met ordergegevens er wel erg veel tekst staat. Daardoor wordt het wat minder overzichtelijk. Dit is wel handig, want de gestippelde KRAMFORS bank heeft een ander nummer dan de bloemetjes variant. Je zou kunnen overwegen om de artikelnamen te vervangen door artikel nummers. Daarnaast zet je dan een kolom met de aantallen en eventueel de prijzen.
Database termen We kunnen nu de officiële database termen gebruiken in het voorbeeld van de IKEA. Deze moet je heel goed leren voor het tentamen! Uit het IKEA voorbeeld Kast met mappen
Officiële term Database
Multomappen
Tabellen
De rij in een tabel (horizontal)
Record
De hokjes in een tabel
Fields
Order nr.
Primary key (Unieke sleutel)
Klant nr.
Is ook een unieke sleutel, maar is in het IKEA voorbeeld ook de Verwijzende sleutel
Rode kolom in de blauwe tabel
Relatie
Betekenis Een verzameling met tabellen waar gegevens op een logische manier geordend zijn Lijsten waarin gegevens op een logische manier geordend zijn De gegevens van een onderdeel, een soort kaart in de “kaartenbak” Elk hokje (elke cel) is een veld met informative Een uniek gegeven (mag dus maar 1x voorkomen) wat ervoor zorgt dat er ergens anders in de database naar dit record verwezen kan worden De verwijzende sleutel is dát gegeven dat in een andere tabel terugkomt. Op die manier is er een relatie gelegd De relatie betekent dat de 2 tabellen (rood en blauw) met elkaar in verbinding staan
Bij de IKEA hebben we ook nog een groene map, daarin staat alle informatie over de werknemers. In een oranje map staan de planningen, wie werkt op welke dagen en van hoe laat tot hoe laat. Gelukkig hoeven Joost en Fabian van de bezorgafdeling niets te weten van alle multomappen, zij hebben alleen de blauwe en de rode mappen nodig. De eindgebruiker van een database krijgt vaak maar een heel klein stukje van de complexiteit (hoe ingewikkeld het is) te zien.
3
Een alledaagse database: Marktplaats Een mooi voorbeeld van een database die iedereen kent is Marktplaats. Marktplaats is een website die draait op een gigantische database met enorm veel tabellen. Alle producten die aangeboden worden zijn in verschillende categoriëen geplaats om het overzichtelijk te houden. Toch is Marktplaats erg gebruiksvriendelijk! Zoek je bijvoorbeeld een mooie nieuwe gitaar? Dan typ je in het zoekveld gewoon een zoekterm in, je kiest een categorie (Snaarinstrumenten: Gitaren | Elektrisch) en geeft een gebied aan door je postcode in te voeren in combinatie met een afstand (25 km vinden we nog wel aan te reizen).
Wat je hier aan het doen bent, heet in vaktermen een query geven. Een query is een zoekterm. Je kunt hier allerlei voorwaarden aan hangen, zoals in dit voorbeeld de categorie en de afstand.
4
Het zou natuurlijk niet handig zijn als je als Marktplaatsgebruiker alle tabellen te zien zou krijgen. Dat zou betekenen dat je aan allerlei rijen en kolommen moet zien of een product interessant is voor jou. Daarnaast zou je dan veel te veel informatie op je scherm hebben. Als je een advertentie aanklikt zie een scherm zoals hieronder. Op dit scherm staat informatie over het product. Die informatie komt uit verschillende tabellen. Je noemt dit een formulier. Een formulier is een grafische weergave van informatie uit (een of meerdere) tabellen. Opnieuw geldt hier: de eindgebruiker van de database ziet niet hoe ingewikkeld hij eigenlijk is van binnen. Het aantal keren dat een advertentie bekeken wordt staat in een andere tabel dan de kenmerken van de gitaar.
Deze informatie komt uit een andere tabel, namelijk die van gebruikers.
Hoe weet Marktplaats dat ik deze advertenties misschien ook leuk vindt? Juist! Er is een koppeling naar mijn zoekopdracht
Als we de weergave bij Zoekresultaten op de Afbeeldingen modus zetten krijgen we mooie plaatjes te zien, en wat minder informatie dan bij de normale zoekresultaten. Eigenlijk ziet het formulier er nu anders uit. In de tabellen die onder de database liggen is natuurlijk niets veranderd. Die informatie staat gewoon nog in het systeem.
5
De Gebruikersomgeving van Marktplaats ziet er wat minder grafisch uit. Als je met je account inlogt en op Mijn Marktplaats klikt zie je een scherm wat lijkt op een normale, droge tabel.
Tot slot, als we op Mijn gegevens klikken kunnen we ons e-mailadres, etc. veranderen. Deze informatie staat in de tabel met klantgegevens, die is enorm. Er zijn namelijk miljoenen Marktplaats gebruikers! Gelukkig hebben ze ervoor gekozen om de informatie die voor ons belangrijk is in één klein formuliertje te zetten. Formulieren maken de informatie uit de (verschillende) tabellen overzichtelijk voor de gebruiker van de database.
6
Een alledaagse database: Magister Een mooi voorbeeld van een database die iedereen hier op school kent is Magister. Magister is een gigantische online database met enorm veel tabellen. Alles wat wij online benaderen staat natuurlijk bij SchoolMaster (de uitgever van Magister) op een server. Alles wat voor school van belang is staat in Magister, denk hierbij aan leerlingen, docenten, vakken, cijfers, Leerling gegevens die bekend zijn: Leerling nummer, roepnaam, officiële naam, achternaam, tussenvoegsels, woonplaats, adres, postcode, telefoonnummer 1, telefoonnummer 2, telefoonnummer 3, telefoonnummer 4, geboortedatum, basisschool gegevens, cito scores , leerproblemen, doktersgegevens, gegevens van ouders, gegevens van de 2
de
ouder bij scheiding
(naam, adres, woonplaats, postcode enz..), betalingsgegevens, cijfers NL, cijfers EN, cijfers DU, cijfers FA, cijfers WI, cijfers AK, cijfers BI, cijfers enz.., absentie, boeken vergeten, huiswerk vergeten, eruit gestuurd, absentie, gespreksnotities 10 minuten avond, gespreksnotities telefonisch contact, gespreksnotities met ouders, VSV gegevens, enz..
Magister staat vol met jullie gegevens, daarnaast staan er gegevens in van al het Personeel, de Roosters, de cijfers, de lokalen, enz… Docenten die inloggen krijgen een tabel te zien met daarin al zijn of haar leerlingen, er is dus een relatie tussen de docenten tabel en leerling tabel.
Dit is een record, dit zijn de gegevens in deze tabel die bij 1 persoon horen
Je ziet hier een field, alles wat in een hokje staat is een record. Dit zijn allemaal records met woonplaats gegevens
7
Het zou natuurlijk niet handig zijn als je als docent alle tabellen te zien zou krijgen, sommige zijn voor docenten namelijk niet interessant. Zo hoef je niet alles te weten van alle leerlingen. Zo heeft iemand in een database altijd bepaalde “rechten”. Een teamleider heeft bijvoorbeeld meer rechten dan een docent. De conciërges zien alle leerlingen aangezien zij de aanwezigheid bij houden en contact met ouders opnemen als leerlingen ongeoorloofd afwezig zijn. Dit zijn enkele voorbeelden uit de praktijk van het programma Magister. Als een docent een leerling opvraagt, dan ziet hij van die leerling een aantal gegevens, die gegevens komen niet uit 1 tabel, maar meerdere. Als je al deze tabellen tegelijkertijd op je scherm zou zien werd het heel onoverzichtelijk. Je krijgt dus een formulier te zien met maar een beperkt aantal gegevens. Dit zijn onderdelen van het formulier van een leerling, de gegevens onder algemeen, studie, communicatie en medische informatie komen uit verschillende tabellen.
Hier vind ik de andere tabellen van deze leerling die voor de docent interessant zijn
Wat voor jullie waarschijnlijk ook direct opvalt, is dat Magister er voor de docent anders uitziet dan voor jullie als leerling. Dit is dus de aanpassing aan de gebruiker, je logt namelijk in als leerling. Deze inloggegevens zijn gelinkt aan bepaalde tabellen en formulieren, je zult dus niet verder komen dan de gegevens die voor jou belangrijk zijn.
8
Hoe ziet een database als magister er nou uit op papier? Ongeveer zo: Je ziet hier een vereenvoudigde weergave van magister, de verschillende tabellen en de relaties. Wat zal nou de primaire sleutel zijn voor de leerling? Heel goed, het leerling nummer, ondanks dat je misschien dezelfde naam hebt als een school genoot. Hebben jullie beide een eigen leerling nummer, deze is uniek en via dit nummer worden de relaties voor jullie in deze database gelegd. De docent heeft ook zijn eigen unieke code, via deze code kan hij leerlingen die hij in de klas heeft terug vinden. Hun basisgegevens vinden en hun cijfers invoeren bij het juiste leerling nummer, waarna jullie dit terug kunnen vinden. Hopelijk is het principe database weer iets duidelijker en hebben jullie nu een beter beeld van Magister
9