Tentamen Datamodellering en –verwerking Vakcode: Datum: Tijd: 8C020 (voorheen 2Z705) dinsdag 20 november 2001 9 – 12 uur Voor dit tentamen kunt u in totaal 40 punten behalen. Het cijfer voor dit tentamen wordt bepaald door het aantal behaalde punten op te tellen en vervolgens te delen door 4. U kunt het vak Datamodellering en –verwerking alleen halen als u zowel voor de opdracht als voor het tentamen een voldoende heeft. Het eindcijfer is in dat geval gelijk aan het gemiddelde van het tentamencijfer en het cijfer behaald voor de opdracht. Aantal te verdienen punten per opgave: Opgave 1: Reisbureau (a) 10 (b) 4 Opgave 2: Cocktail (a) 2 (b) 2 (c) 2 (d) 2 Opgave 3: Chinees (a) 1 (b) 1 (c) 1 (d) 1 (e) 2 (f) 4 Opgave 4: Nachtzuster (a) 6 (b) 2 Totaal te verdienen: 40 punten. Het tentamen bestaat uit 3 pagina’s. Opgave 1: Reisbureau Een BMT-student heeft vakantiewerk gevonden bij een reisbureau. Tijdens de kerstvakantie moet hij een administratief systeem opzetten voor het reisaanbod en het klantenbestand. Er wordt onderscheid gemaakt tussen wintersportvakanties, rondreizen en zonvakanties. De aangeboden reizen hebben een vertrekdatum, een prijs en een bestemming. Rondreizen kunnen uiteraard meerdere bestemmingen hebben. Bij sommige wintersportvakanties worden gratis skilessen aangeboden en sommige zonvakanties zijn inclusief de huur van een auto. De klant kan een reis boeken en eventueel een reisverzekering afsluiten. Als extra service wil het reisbureau aan de klant aanbieden om het telefoonnummer, adresgegevens en aankomsten vertrekdatum van de bestemmingen uit te printen. De reizigers kunnen deze gegevens bij de thuisblijvers achter laten, zodat ze in geval van nood bereikbaar zijn. Deze service wordt met name voor rondreizen zeer gewaardeerd. (a) Geef bovenstaande informatie zo goed mogelijk weer in een datamodel in de vorm van een ER-diagram. Eventueel ontbrekende informatie mag je zelf aanvullen. (b) Geef bovenstaande informatie zo goed mogelijk weer in een relationeel database model, d.w.z. specificeer relaties, attributen, domeinen en sleutels. 1 Opgave 2: Cocktail De Ontmoetingsruimte voor Alternatieve Recreatie (OAR) wil graag een database applicatie voor de administratie ten behoeve van de wekelijkse cocktail avond. Drie BMT-studentes zijn lid van de cocktail-commissie. Zij hebben het vak Datamodellering en –verwerking gevolgd en hebben een database gemaakt die opgebouwd is uit de volgende relaties (tabellen): Cocktail (cocktailnaam, prijs, kenmerk), Ingredient (ingrnaam, voorraad, eenheid), Samenstelling (cocktailnaam, ingrnaam, hoeveelheid), Verkoop (datum, cocktailnaam, aantal), Bestelling (ingrnaam, besteldatum, leverdatum, hoeveelheid, prijs). (a) Druk de volgende query uit in SQL: “Geef naam en kenmerk van alle cocktails die rum bevatten.” (b) Druk de volgende query uit in SQL: “Geef de naam, voorraad en eenheid van alle ingrediënten waarvoor tenminste twee bestellingen zijn gedaan.” In SQL kunnen operatoren zoals MIN, MAX en SUM gebruikt worden om het minimum, maximum en som van een attribuut te bepalen. Zo kan met de volgende SQL-query de hoogste leeftijd van de personen in de personen-relatie bepaald worden: SELECT MAX(leeftijd) FROM personen; (c) Druk de volgende query uit in SQL: “Geef de hoogste prijs betaald voor een cocktail die aardbeien bevat en verkocht is op maandag 19 november.” (d) Druk de volgende query uit in SQL: “Geef de kenmerken van alle cocktails die tenminste 10 ml rum bevatten, maar geen wodka.” 2 Opgave 3: Chinees Bij chinees restaurant ‘Lotus’ kan men een maaltijd bestellen in het restaurant of een maaltijd afhalen aan de afhaalbalie. De ober neemt de bestelling op van klanten in het restaurant, terwijl de chinese mevrouw achter de balie de bestellingen noteert van balieklanten. Er is één kok die alle maaltijden bereidt. De maaltijden bestemd voor klanten in het restaurant worden door de ober geserveerd. Afhaalmenu’s worden door de baliemedewerkster aan de klant afgegeven. Onderstaande figuur is een Petri-net dat de bediening van de klanten en het bereiden van de maaltijden modelleert. Tokens in kanaal k1 stellen klanten voor die bij restaurant ‘Lotus’ binnenkomen. Tokens in kanaal k8 stellen klanten voor die het restaurant verlaten hebben. De begintoestand wordt gedefinieerd door in het kanaal k1 twee tokens te leggen. (a) (b) (c) (d) (e) Welke processoren zijn in de begintoestand enabled? Geef een toestand waarin processor klant gaat weg enabled is. Is deze toestand (antwoord bij (b)) bereikbaar vanuit de gegeven begintoestand? Verlaat uiteindelijk iedere klant restaurant ‘Lotus’? Zo nee, waarom niet? Klanten in het restaurant krijgen de maaltijd geserveerd door de ober, terwijl klanten aan de afhaalbalie hun maaltijd krijgen van de chinese mevrouw achter de balie. Wordt dit correct gemodelleerd door het gegeven Petri-net? Geef ook een verklaring voor je antwoord. (f) Pas het Petri-net aan zodat het restaurant correct wordt gemodelleerd. Opgave 4: Nachtzuster Op een afdeling in het ziekenhuis werken een hoofdzuster, een nachtzuster en drie verpleegsters. De hoofdzuster en de nachtzuster wisselen elkaar af. De hoofdzuster werkt overdag samen met tenminste twee verpleegsters. De nachtzuster werkt ’s nachts en meestal alleen. Verpleegsters kunnen elkaar onderling aflossen. (a) Modelleer dit systeem met behulp van een klassiek Petri-net. Geef ook een korte toelichting en een mogelijke begintoestand. (b) Het personeelsbestand van de afdeling wordt uitgebreid met een extra verpleegster. Geef aan hoe het Petri-net aangepast moet worden om de nieuwe situatie te modelleren. 3