Het Dieren Montmartre van de databases (2)

Vandaag was het beruchte tentamen waar ik gisteren over geblogd had. Ik hoorde daar eerst niet bij te zitten, maar wilde toch even langs lopen en het bleek dat ze me wel konden gebruiken als extra surveillant. Apart was het, want wat ik zag op de voorste rij waren niet studenten die druk aan het tentamen maken waren, maar dieren aan het schetsen waren. Overigens, voor de duidelijkheid waren er ook een hoop studenten die wel langer dan de minimale 30 minuten bleven zitten en duidelijk wel meer richting ‘antwoorden’ op het papier wisten te krijgen :). https://twitter.com/#!/BobJoziasse/status/192570680821293056

Toch kan ik het niet laten om dan ook even het tentamen in te kijken. Je kan bij een toets vragen stellen op verschillende niveau’s. Dit heeft te maken met de taxonomie waarop je wilt toetsen. Bijvoorbeeld kennis reproductie of toepassen. Hierbij is het belangrijk te weten dat toepassen na reproductie komt en een aanvulling is. Dus als je kan toepassen, dan moet je ook de kennis kunnen reproduceren. Dat reproduceren komt neer op gewoon leren, uit je hoofd. Toepassen houdt in dat je die geleerde kennis kan omzetten in de praktijk.

Als ik kijk naar het tentamen, dan staan in de twee pagina’s en vijf vragen de vragen verdeeld over deze twee taxonomieen. Het begint met een flinke case beschrijving. Iets over scholen, het bedrijfsbureau en het reserveren van projectruimtes. Daarbij worden wat CREATE statements gegeven naast de context van de case.

Vraag 1

Bij vraag 1 beginnen we eigenlijk lekker simpel, althans, als je door de case heen kijkt. De eerste vraag heeft te maken met het geven van de statements voor het aanmaken voor de drie rollen uit de case, de DOCENT, MEDEWERKER en de STUDENT. Dit is toch wel kennis reproductie, hoe maken we rollen aan? CREATE ROLE role_name. Je moet er maar opkomen ;). Dus CREATE ROLE STUDENT

Vraag b gaat over het toepassen van de rechten uit de case op de zojuist aangemaakte rollen. Rechten, wat hoort daar bij? De GRANT. Dus eigenlijk moeten we een aangemaakte rol permissies gaan GRANT’en. Bijvoorbeeld, stel de STUDENT’en mogen reserveringen aanmaken. Het aanmaken klinkt als een nieuwe record aanmaken in de database, dus een INSERT. Dan wordt mijn GRANT dus GRANT INSERT ON reserveringen TO STUDENT waardoor de STUDENT nu INSERT rechten krijgt op de tabel reserveringen.

De c vraag is wat meer tricky. De vraag hier is om STUDENT alleen rechten te geven op een beperkte set attributen (=kolommen) uit de tabel reserveringen. Tim, niet een student uit mijn klas, maar we komen elkaar wel eens tegen, kwam met de oplossing. Hij had het over een VIEW aanmaken. Daar kan je namelijk makkelijk een SELECT in opnemen met alleen deze attributen en dan op de VIEW (= virtuele tabel) die rechten zetten. Ok, dan lijkt het in eens een stuk simpeler. CREATE VIEW en GRANT SELECT op die VIEW is dan een kwestie van syntax herhalen en de namen vervangen door de namen die we hier verzinnen.

Dat zijn dan 30 punten in de pocket…

Vraag 2

Vraag 2 gaat over het bij a) laten controleren op of bij het toevoegen van een waarde in het veld email altijd een ‘@’ teken zit. We willen dus checken op een afgedwongen teken, een constraint dus. Ik denk aan een CHECK CONTRAINT. Dit kan opgenomen worden in een CREATE TABLE, namelijk met CONSTRAINT naam_van_de_constraint CHECK (email LIKE '%@%'). Dit is dan onderdeel van de CREATE student statement.

Bij b gaan we er eigenlijk iets dieper op in. Hier moeten we goed kijken wat er gevraagd wordt. Namelijk, iets mag niet gebeuren (verwijderd worden) als het niet aan bepaalde voorwaarden voldoet, namelijk het alleen als er geen reserveringen meer zijn. Als ik kijk in de CREATE statements gegeven in het tentamen en ik ga er even vanuit dat ik bij lokaal een lokaalId INT mag gebruiken (!), dan zou ik een FOREIGHN KEY aanmaken in de tabel, zodat er geen records kunnen worden gedeletet als deze worden gerefereerd vanuit een andere tabel.

Vraag 3

Bij vraag drie wordt er eigenlijk gevraagd om een TRIGGER en STORED PROCEDURE aan te maken met wat intelligentie die verhinderd dat iets gebeurd als er een INSERT plaats vindt, dus een BEFORE INSERT die dan checkt of er conflicterende reserveringen zijn. Zo ja, dan wijgeren, zo niet, dan doorlaten.

Vraag 4

Transacties! Zowel a, b als c zijn eigenlijk kennis reproductie vragen. Er wordt gevraagd of je uit kan leggen wat een Non repeatable Read is. Dat is theorie 101. Daarna of je kan uitleggen wat een deadlock is bij b en als laatst bij c wat ISOLATION LEVELS zijn… Dit lijken me zelf geen toepassings vragen, maar vragen die direct de leerstof herhalen.

De laatst vraag, vraag 5

Een B-tree maken. Ook dat lijkt op het herhalen van de theorie. Het maken van een B-tree en daarbij het invullen van de gegeven waarden uit het tentamen.

Conclusie

Ondanks de mooie tekeningen, denk ik dat het niet een kwestie van ‘niet snappen’ is. Het lijkt misschien een moeilijk tentamen, maar het is eigenlijk een kwestie van leren van de syntax en voorbeelden eventueel. Dat zet mij wel aan het denken, waarom is dat niet gelukt. Ik denk dat onze taak, die van de docenten van tegenwoordig, onder andere is een leeromgeving te maken die de student stimuleerd te leren en te leren leren. Mocht dat om een of andere reden niet helemaal gelukt zijn, dan kan ik me voorstellen dat de studenten ook niet gemotiveerd zijn om te leren en het snel op ‘niet snappen’ gooien. Ondersteuning is hierbij wel belangrijk. De docent moet de student wel verder helpen. Natuurlijk kan het ook een tactische keuze zijn van de student om dit vak over te slaan en te concentreren op andere vakken. Of een niet tactische keuze (of wel, maar dan snap ik hem gewoon niet) om bijvoorbeeld eerst Assassins Creed uit te spelen of lekker naar de kreog te gaan en dan pas leren. Voor de docenten is leren in ieder geval duidelijk meer dan alleen het aanbieden van stof… En daar kan IK wat mee.

  6 comments for “Het Dieren Montmartre van de databases (2)

  1. Martijn
    18 april 2012 at 21:45

    Het klopte dus dat er een fout in de toets zat (het ontbreken van lokaalid in de tabel lokaal)?

    • Bob
      19 april 2012 at 06:02

      Weet niet of het een fout is, misschien was het de bedoeling, of moet je hem linken aan de lokaalcode, maar dat zou ik zelf niet helemaal doen zo. Het zou best kunnen dat het een foutje is.

  2. Torrortimmiee (Niels Verhoeven)
    19 april 2012 at 09:01

    Mijn tip: THEORIE IN KLEINERE GROEPEN:)
    Bovendien had Inf1c ook dikke pech met ______ :S
    Maar verder zal ik deze blog ff onthouden(a) miss heb ik er nog wat aan bij de herkansing:)

    Adios!

  3. Martin
    19 april 2012 at 10:45

    Vergeet niet dat bij vraag 1C ook nog een revoke statement moet… het is anders vrij nutteloos om ‘student’ een select op een view te geven, als hij nog steeds bij de orginele tabel kan.

  4. Bob
    20 april 2012 at 08:05

    Wat ik ook trouwens vergeten was mee te nemen, de motivatie om eerst Database 1 te leren en later te concentreren op Database 2. #correctie #nieuweoptie

Laat een reactie achter bij Bob Reactie annuleren

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

Zoals de meeste websites gebruiken we cookies om een meer persoonlijke en snelle service te bieden.

Wij gebruiken cookies zodat onze website meer efficiënt kan functioneren, om de prestaties te verbeteren en, eventueel, om op maat reclame van onze partners aan te bieden. Als u doorgaat gaan we ervan uit dat u akkoord gaat alle cookies te krijgen van onze website.

To accept cookies please Click To Continue