Tentamen Informatica 6, 2IJ60,

Vergelijkbare documenten
Tentamen Informatica 6, 2IJ60,

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

Tentamen Databases. 18 december :00-12:00, Educatorium Gamma

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Proeftentamen ISO (2R290), query-gedeelte, Oktober 2006

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

Tentamen Databases voor iku

Databases (INFODB) 24 januari 2007

Databases (INFODB) 20 april 2010

Tentamen Databases voor ica

Tentamen Databases voor ica

Databases SQL - meerdere tabellen

SQL: query taal met. woorden. ISO SQL: Structured Query Language. de SQL basis query structuur. voorbeeld: doel: intuitieve query taal

ISO SQL: Structured Query Language

Introductie (relationele) databases

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

Data Manipulatie. Query Talen. / Informatica

1. * Database worden vaak gebruikt in Client-Server architectuur.

H 1 Databases en databasesystemen (10 punten) a. Veel van de huidige databases zijn gebaseerd op een drie-laags systeemarchitectuur:

Databases en SQL Foundation (DBSQLF.NL)

Les S-01: De basisbeginselen van SQL

Toets informatica V5 module VIII hfst 1, 2 en 3 februari 2011

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: Groep TDI 1

Relationele Databases 2002/2003

Relationele Databases 2002/2003

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 17 november 2004, 9:00u-12:00u

SQL: oefenen queries

TU Delft TENTAMEN DATABASES. Opgaven IN2105/IN oktober uur. Er zijn 6 opgaven. maximale score 100 punten

Ternaire relaties in ERDs zijn lastig

1. Databanken. Wat is een databank? Verschillende opslagmethodes

Oplossingen Datamining 2II15 Juni 2008

databases & SQL - antwoorden

Databases - Inleiding

Relationele Databases 2002/2003

ISO Query By Example

Les S-01: De basisbeginselen van SQL

NHibernate als ORM oplossing

Werken met Bibliotheek.net

Datamodelleren en databases 2011

Gebruikers Handleiding

46 verbeterpunten voor Aura Online upgrade 3.0 van mei 2012

Workshop 3x. Normaliseren. Normaliseren. Hiëarchische database ODBMS. Relationele database. Workshop 14 oktober A. Snippe ICT Lyceum 1

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

Functioneel programmeren

[TOETS SQL INLEIDING]

Informatie Systeem Ontwikkeling ISO 2R290

H20 COÖRDINATEN de Wageningse Methode 1

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 19 januari 2005, 14:00u-17:00u

de Wageningse Methode Antwoorden H20 COÖRDINATEN VWO 1

5 abd. 6 a A(-3,5) ; B(2,4) ; C(-2,2) ; D(5,0) ; E(0,-3) ; F(-6,-4) ; G(6,-4) b

IN2105/IN2410 Databases

Deeltoets Digitale technieken

Les 2 Eenvoudige queries

Eindtoets. Opgaven. 1 Gegeven is het domeinmodel van figuur 1. Domeinmodel voor betalingen. Eindtoets I N T R O D U C T I E.

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 19 januari 2005, 14:00u-17:00u

SQL en XML. XML schema s & DMO. Entiteitsklasse en attribuut. SQL en XML. Datamodellering Schema een ruim begrip (zie Møller, p.

Het omzetten van een ER-diagram naar SQL

Entiteit Zaken en gebeurtenissen waarvan gegevens moeten worden vastgelegd worden een entiteit genoemd: b.v. mens, voorstelling, auto.

SQL & Relationele datamodellen in interactieve media

Van een ER-diagram naar een database specificatie in SQL

opgaven formele structuren tellen Opgave 1. Zij A een oneindige verzameling en B een eindige. Dat wil zeggen (zie pagina 6 van het dictaat): 2 a 2.

Informatie & Databases

opgaven formele structuren deterministische eindige automaten

Het Bibliotheekbeheer systeem

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Tentamen Calculus C (2WCB1) op zaterdag 25 januari 2014, 9:00 12:00 uur

EXIN Databases en SQL Foundation

PROVINCIAAL BLAD VAN ZEELAND

Miniles gegevensbanken bevragen met SQL

n 2 + 2n + 4 3n 2 n + 4n n + 2n + 12 n=1

Oefening 1. Bedenk een voorbeeld van een vreemde sleutel die naar de eigen relatie verwijst.

TI2500 Informatie en Datamodellering

Structured Query Language (SQL)

Normaliseren versie 1.1

Hoofdstuk: 1 Principes van databases

9. Het wijzigen van gegevens

12. Meer dan één tabel gebruiken en sub-queries

Verbeteringen in Aura Online update dec 2011

Inleiding tot de catalogus. 10mm. foto

Een introductie tot gegevensbanken

Zelftest SQL. Document: n0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

7. Het selecteren van gegevens

Transcriptie:

Tentamen Informatica 6, 2IJ60, 29-04-2005 Dit tentamen bestaat uit 6 opgaven. Bij elke opgave staat aangegeven hoeveel punten te behalen zijn. Één punt ontvang je cadeau voor de aanwezigheid. Het eindresultaat wordt verkregen door de punten voor alle opgaven te sommeren en door 3 te delen met afronding naar boven of naar beneden. Geef de oplossingen kort, bondig en duidelijk weer. Dit is een open boek tentamen (je mag het Silberschatz boek en aantekeningen gebruiken, maar geen laptop). Dit tentamen bestaat uit twee delen: een pre -tentamen en een hoofd -tentamen. Het pretentamen bestaat uit drie vragen, waarvan ten minste twee correct beantwoord dienen te worden, voordat het hoofdtentamen wordt nagekeken. Als je geen of slechts één van de pretentamen-vragen correct beantwoordt, wordt je cijfer 1 onafhankelijk van de oplossingen die je voor de hoofdtentamenvragen geeft. Wees dus zorgvuldig in het beantwoorden van het eerste deel. Daarna kun je verder gaan met de overige vragen. In de query opgaven wordt een (deeltje van een) universiteitsbibliotheek-database gebruikt met de volgende tabellen en attributen: De bibliotheekdatabase Het onderstaande relationele schema stelt een (deel van een) sterk vereenvoudigde universiteitsbibliotheekdatabase voor. Het wordt gebruikt in alle onderstaande vragen. In de query opgaven wordt een (deeltje van een) universiteitsbibliotheekdatabase gebruikt met de volgende tabellen en attributen: boek : { ISBN, titel, uitgever, jaar } auteur : { ISBN, voorletters, naam } exemplaar : { barcode, ISBN, faculteit, exjaar, aanwezig } reservering : { naam, faculteit, ISBN, datum, geannuleerd } uitlening : { naam, faculteit, barcode, van, tot } Korte beschrijving: Elk boek heeft een uniek ISBN nummer. Het heeft een titel, uitgever, jaar van uitgifte en een aantal auteurs waarvan we de voorletters (samen als 1 string) en de achternaam bijhouden. Verschillende edities van eenzelfde boek hebben een verschillend ISBN nummer en zijn dus voor ons verschillende boeken. De database bevat alle auteurs van in de database aanwezige boeken, en geen auteurs die niet (met ISBN nummer) overeenkomen met een boek. De universiteit heeft van elk boek 1 of meer exemplaren. Elk exemplaar is in een bepaald jaar (exjaar) aangekocht, heeft een sticker met een unieke barcode en is toegewezen aan een faculteit. (Boeken kunnen worden uitgeleend aan mensen van andere faculteiten.) Een exemplaar kan afwezig zijn omdat het nog niet geleverd is, wordt hersteld, of omdat het is uitgeleend. Personen worden geïdentificeerd door hun achternaam en faculteit. Ze kunnen een boek reserveren op een bepaalde datum. (Het type van datum is zodanig dat data die niet NULL zijn met elkaar vergeleken kunnen worden, bijvoorbeeld met < en.) Personen kunnen een reservering op elk willekeurig moment weer annuleren. De datum blijft dan die van de

reservering, dus de datum waarop de reservering is geannuleerd wordt niet bijgehouden. (Het geannuleerd attribuut heeft altijd een waarde ja of nee.) Ze kunnen een exemplaar van een boek lenen op een bepaalde van datum. Ze zijn dan lener. Een eventuele reservering van dat boek (op hun naam) wordt dan automatisch geannuleerd (de record van de reservering blijft in de database staan maar geannuleerd wordt ja ). De tot datum blijft NULL tot het boek is teruggebracht. De tot datum is minstens 1 dag later dan de van datum. Wanneer een boek is teruggebracht wordt de uitlening in de database bewaard en wanneer een reservering wordt geannuleerd (bijvoorbeeld omdat het boek wordt geleend maar het kan ook om andere redenen zijn) wordt die reservering ook bewaard. De bibliotheek bestaat al een hele tijd. Bijgevolg heeft elke faculteit wel wat (exemplaren van) boeken, heeft er uit elke faculteit wel eens iemand een boek gereserveerd en iemand een exemplaar geleend, en is er van elke faculteit wel eens een boek gereserveerd en wel eens een (exemplaar van) een boek geleend. Let zeker op de volgende valstrikken : De attributen naam en faculteit worden in deze database in twee verschillende betekenissen gebruikt. Zorg dat je die niet per ongeluk door elkaar gebruikt. Let ook op voor de verschillen tussen boeken en exemplaren. In een vraag schrijven we misschien wel eens dat een boek wordt geleend, maar we bedoelen dan dat een exemplaar (eender welk!) van dat boek wordt geleend. Twee uitleningen van eenzelfde boek kunnen uitleningen van verschillende exemplaren zijn. Zorg dat je altijd goed in de gaten hebt of er een boek als generiek object wordt bedoeld of een exemplaar als concreet item dat kan worden geleend. Pre-tentamendeel Deze vragen worden helemaal correct of helemaal fout gerekend. 1. (2 punten) Bestudeer grondig de beschrijving van de bibliotheek-database. Beschrijf dan de volgende vraag in de relationele algebra: Geef de titels van de boeken die in 2004 gekocht zijn. 2. (2 punten) Beschrijf de volgende vraag over de bibliotheek-database in SQL: Geef de naam en voorletters van de auteurs wiens boeken in 2004 uitgeleend werden. (de uitlening is in 2004 begonnen) 3. (2 punten) Beschouw een relationeel schema R met attributen {A, B, C, D}, elk met een groot domein zoals integers of strings, en de verzameling functionele afhankelijkheden F = {AB CD, BD AC, C AD}. Is dit schema in 3NF? Leg uit waarom dit wel of niet zo is. (Zonder uitleg wordt deze vraag fout gerekend.) Einde pre-tentamendeel. Wanneer je niet minstens twee van deze drie vragen goed hebt wordt de rest van het tentamen niet nagekeken. Je kunt voor jezelf bepalen of je nog verder wilt gaan!

Hoofd-tentamendeel Je hoeft de vragen niet te beantwoorden in de onderstaande volgorde. Begin met wat je het beste kan! 1. (2 punten) Geef een vertaling van het bovenstaande E-R model naar een relationeel model, d.w.z. geef aan hoe deze informatie met behulp van relaties (tabellen) kan worden opgeslagen. Vermeld per relatie de attributen en sleutels.

2. (5 punten) Geef een ER-model (ER-diagram) voor de data in het informatiesysteem. Geef aan welke voorwaarden/beperkingen uit deze opgave niet in het model zichtbaar zijn en waarom niet. De reisadministratie van een bedrijf houdt de informatie bij over alle dienstreizen van de medewerkers van het bedrijf. Over elke reis is er bekend door wie die gemaakt is (naam, voorletters, personeelsnummer, telefoonnummer en e-mail adres) en wat de motivering van de reis is. Er wordt ook bijgehouden welke vervoermiddelen (vliegtuig, trein, auto, bus) tussen welke plaatsen (deeltraject) voor de reis gebruikt werden, wat de vertrek- en aankomstdata en tijden voor elke deeltraject zijn en wat de kosten voor elk soort van de gebruikte vervoermiddelen zijn. Het is ook bekend of het een binnenlandse of buitenlandse reis is, en naar welk land het is, wat de bestemming(en) precies zijn, data van verblijf voor elke van de bestemmingen, en dus ook aantal overnachtingen voor elke bestemming. Verblijfdata moeten met vertrek- en aankomstdata overeen komen. De feitelijke kosten van het verblijf (logies-, ontbijt-, lunch- en dinercomponent) worden gedeclareerd en er wordt gecontroleerd of de feitelijke kosten de maximale toegestane kosten niet overschrijden. De maximale kosten van deze componenten zijn voor elk land apart vastgelegd. 3. (2 punten per query) Druk de volgende vragen over de bibliotheek uit in één van de bestudeerde querytalen (relationele algebra, tupel calculus of SQL) naar keuze. Hint: sommige vragen zijn in sommige talen gemakkelijker dan in andere. Je mag het jezelf dus gemakkelijk maken door een verstandige keuze van querytalen. Je mag bij elke vraag een andere querytaal gebruiken als je wilt, maar je mag ze ook allemaal in eenzelfde taal uitwerken. a) Geef de titels van boeken die nog nooit werden uitgeleend. b) Geef de naam en voorletters van de auteurs van wie de bibliotheek het grootste aantal exemplaren van boeken heeft. c) Geef de titels van de boeken die op dit moment door leden van elke faculteit gereserveerd zijn. 4. (2 punten per query) Leg in normaal klinkend Nederlands uit wat er in de volgende queries gevraagd wordt: a) SELECT u.naam, u.faculteit FROM uitlening AS u WHERE (u.naam, u.faculteit, u.barcode) NOT IN (SELECT r.naam, r.faculteit, e.barcode FROM reservering AS r, exemplaar AS e WHERE e.isbn = r.isbn AND r.datum < u.van) b) π naam, faculteit (uitlening) π naam, faculteit (auteur >< uitlening >< exemplaar)

5. (6 punten) Veronderstel dat we een database willen construeren uit een verzameling data items {A, B, C, D, E, G} (die later attributen van tabellen zullen worden) en een verzameling F van functionele afhankelijkheden: F = {AB CD, A E, E BC, B E}. a) Bereken een canonieke afdekking (canonical cover) F C voor deze verzameling afhankelijkheden. (als je overbodige attributen schrapt, beargumenteer met het gebruik van Armstrong s axioma s en union, decompositie en pseudotransitivity regels dat deze attributen inderdaad overbodig zijn. Zonder argumentatie wordt het antwoord fout gerekend.) b) Begin met een tabel R met als attributen ABCDEG en decomponeer deze met behoud van afhankelijkheden en verliesloos (dependency-preserving en lossless-join) tot een database in 3NF. c) Is deze decompositie ook in BCNF? Beargumenteer je antwoord. (Zonder uitleg wordt het antwoord fout gerekend.) d) Er zijn twee verschillende decomposities van R gegeven. Decompositie 1: in tabellen (A,B,C,D) en (B,E,G), en decompositie 2: in tabellen (A,B,C,D,E) en (A,G). Geef voor elke decompositie aan of deze decompositie lossless-join is en beargumenteer je antwoord. (Zonder argumentatie wordt het antwoord fout gerekend.)