TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica



Vergelijkbare documenten
Tentamen Informatica 6, 2IJ60,

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

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

Tentamen Databases voor iku

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

Databases (INFODB) 20 april 2010

Databases (INFODB) 24 januari 2007

Tentamen Databases voor ica

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

Data Manipulatie. Query Talen. / Informatica

Tentamen Databases voor ica

Databases SQL - meerdere tabellen

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

ISO Query By Example

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

Introductie (relationele) databases

SQL: oefenen queries

EXAMEN juni 2016 Gegevensbanken

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

SQL opgaven. Relationele model: Opgaven:

Structured Query Language (SQL)

Les S-01: De basisbeginselen van SQL

Datamodelleren en databases 2011

databases & SQL - antwoorden

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

SQL & Relationele datamodellen in interactieve media

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Proeftentamen ISO (2R290), November 2005

Informatie & Databases

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

Relationele Databases 2002/2003

Relationele Databases 2002/2003

Verbeteringen in Aura Online update dec 2011

Miniles gegevensbanken bevragen met SQL

Les 2 Eenvoudige queries

46 verbeterpunten voor Aura Online upgrade 3.0 van mei 2012

Zelftest SQL Workshop

Databases en SQL Foundation (DBSQLF.NL)

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

Relationele Databases 2002/2003

1. Databanken. Wat is een databank? Verschillende opslagmethodes

= > >= < <= BETWEEN IS NULL IS NOT NULL

opgaven formele structuren deterministische eindige automaten

Werken met Bibliotheek.net

Handleiding Mijn menu

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

Correctievoorschrift VWO NederlandsNederl. Informatica. Tijdvak 1 Woensdag 17 mei uur. College-examen schriftelijk.

SQL / Systeemanalyse

Het omzetten van een ER-diagram naar SQL

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

TI2500 Informatie en Datamodellering

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

Query SQL Boekje. Fredrik Hamer

DE BIBLIOTHEEK BIJ JE THUIS. Verlengen, reserveren.via internet

Praktijkinstructie Dataverwerking 1 (CSE02.1/CREBO:50236)

Software-Ontwikkeling I Academiejaar

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.

Zelftest SQL Workshop

Deficiëntiecursus (instroom ) Wiskunde B. Opleidingen van Techniek

Reglement Juridische Bibliotheek

Uitleengedrag van klanten in een bibliotheek

surf ik bib? hoe naar mijn in een wip Ook mijn bibliotheek is een Ovinob-bibliotheek! Surf naar

Computerclub Volwassenen, Jeugd en Informatica vzw

Correctievoorschrift HAVO Informatica. Tijdvak 1 Woensdag 24 mei uur. College-examen schriftelijk.

Gekoppelde tabellen: de JOIN

Les S-02: Meer geavanceerde SQL-instructies

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

(instroom ) Cursus Wiskunde B

Les S-01: De basisbeginselen van SQL

[TOETS SQL INLEIDING]

Gebruikers Handleiding

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

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Tentamen Lineaire Algebra voor ST (2DS06) op , uur.

Huiswerk Spreekbeurten Werkstukken

Relationele Databases 2002/2003

de praktijk: tabellen

Functioneel programmeren

Inleiding tot de catalogus. 10mm. foto

TECHNISCHE UNIVERSITEIT DELFT Sectie Database Systemen Zuidplantsoen BZ DELFT. Oefening Inleiding Database Systemen. Opgave: Prakticumbeheer

Ook mijn bibliotheek is een Ovinob-bibliotheek!

NHibernate als ORM oplossing

nederlands Schrijven voor 1F Deel 2 van 5

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

Hoe bereid ik een spreekbeurt voor?

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

SQL & Datamodelleren

lesmateriaal bij Ik regel mijn geldzaken

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Tentamen Lineaire Algebra voor ST (2DS06) op , uur.

Informatica toets vwo 6 Databases

Correctievoorschrift HAVO Informatica. Tijdvak 1 Woensdag 9 mei uur. College-examen schriftelijk.

EXIN Databases en SQL Foundation

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.

Tentamen Gegevensbanken ( ) 28 oktober 2010

Tentamen Gegevensbanken ( ) 3 februari 2012

Databases - Inleiding

Oplossingen Datamining 2II15 Juni 2008

PROGRAMMA Vak: informatica..

ONBETWIST ONderwijs verbeteren met WISkunde Toetsen. Planning onderwijs testfase 1. Deliverable 4.2. Evert van de Vrie. ONBETWIST Deliverable 4.

Transcriptie:

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica Extra Tentamen Databases 1, 2M400, 8 oktober 2003. Alle uitwerkingen van de opgaven moeten worden ingevuld in de daarvoor bestemde vrije ruimte bij de tentamenvragen. Alleen wat op deze formulieren is ingevuld wordt nagekeken. De ruimte die is voorzien is in elk geval voldoende voor het correcte antwoord, in een normaal leesbare letter-grootte. Elk antwoord moet staan in de ruimte bij de vraag, tenzij verwezen is naar de laatste (witte) pagina voor een tweede poging. Dit is een open boek tentamen. Je mag gebruik maken van boeken en aantekeningen, op papier of op de computer. Alle niet door jezelf geschreven materiaal dient te dateren van vóór de aanvang van dit tentamen. Het gebruik van communicatieapparatuur is niet toegestaan. (Geen mobiele telefoons, wel laptops zonder netwerk, voor het lezen van elektronisch materiaal.) Hier is het recept voor dit tentamen: 1. Zoek een vraag die je denkt te kunnen beantwoorden. 2. Werk het antwoord uit. 3. Kom het antwoord tonen en indien nodig toelichten. 4. Ga na beoordeling/toelichting verder met een volgende vraag, of met een tweede (en tevens laatste) poging voor dezelfde vraag. 5. Herhaal dit proces tot het eerste van de volgende drie situaties zich voordoet: je hebt alle vragen beantwoord, het is 12 uur is, of je geeft het op. Beoordeling: elke vraag of onderdeel van een vraag staat op 2 punten. Is de vraag meteen goed beantwoord dan krijg je 2 punten. Is de vraag bij een herkansing goed krijg je nog 1 punt. Is de vraag na een herkansing nog steeds niet (helemaal) goed krijg je 0 punten. Alles telt op tot 20 en wordt gedeeld door 2, met afronding naar boven.

De bibliotheek-database In de query opgaven wordt een (deeltje van een) universiteitsbibliotheek-database 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 geidentificeerd 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 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 of in een join mee neemt. 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. Wie alleen nog maar een boek gereserveerd heeft maar nog nooit iets heeft geleend is nog geen lener. Een lener is iemand die al eens een boek heeft geleend.

1. Druk de volgende vragen over de bibliotheek uit in één van de drie bestudeerde querytalen (relationele algebra, tupel calculus of SQL) naar keuze. Als je een aggregatie wil gebruiken dan moet je SQL als taal kiezen. Er zijn 5 vragen, en in de 5 antwoorden moet minstens 1 keer de relationele algebra worden gebruikt, 1 keer de tupel calculus en 1 keer SQL. a. Geef de titels van alle boeken, van auteurs waarvan de bibliotheek meer dan één boek bezit. (Verschillende exemplaren van eenzelfde boek tellen niet als meer dan één boek, verschillende edities van eenzelfde boek wel.) Voor de eenvoud maar even in tupel calculus gedaan. We zoeken twee boeken (b en b1, met verschillend ISBN nummer want anders is het hetzelfde boek) en met dezelfde auteur (a en a1 zijn dezelfde persoon).. { t b boek ( b[titel] = t[titel] a auteur ( b[isbn] = a[isbn] b1 boek ( a[isbn] b[isbn] a1 auteur ( a1[isbn] = b1[isbn] a1[naam] = a[naam] a1[voorletters] = a[voorletters] ) ) ) ) } b. Geef de titel van de boeken die al vaker zijn gereserveerd dan uitgeleend. Tellen, dus SQL gebruiken. Opletten we de nullen meetellen. SELECT titels FROM boek as b WHERE ( SELECT COUNT(*) FROM reservering as r WHERE b.isbn = r.isbn ) > ( SELECT COUNT(*) FROM uitlening as u, exemplaar as e WHERE u.barcode = e.barcode AND u.isbn = b.isbn )

c. Geef de titels van boeken die al door leners van elke faculteit zijn geleend. (Dus uit elke faculteit een lener. Leners die uit alle faculteiten tegelijk komen bestaan niet.) elke faculteit, dus division in relationele algebra, want we vergelijken met een vaste verzameling. titel ( ) titel, ISBN, faculteit ( uitlening barcode, ISBN (exemplaar) uitlening ) faculteit ( exemplaar ) d. Geef de naam en faculteit van elke lener en het aantal openstaande leningen van die lener. (Een lening staat open als het boek nog niet is teruggebracht.) Niet vergeten dat er leners zijn die geen openstaande leningen hebben (maar wel leningen waarbij de boeken zijn teruggebracht). SELECT u.naam, u.faculteit, COUNT(*) AS aantal FROM uitlening AS u WHERE u.tot IS NULL GROUP BY u.naam, u.faculteit UNION SELECT u.naam, u.faculteit, 0 AS aantal FROM uitlening AS u WHERE NOT EXISTS ( SELECT * FROM uitlening AS uu WHERE u.naam = uu.naam AND u.faculteit = uu.faculteit AND u.tot IS NULL )

e. Geef de faculteiten die met elke andere faculteit een boek gemeenschappelijk hebben. (Gemeenschappelijk betekent dat beide faculteiten een exemplaar hebben van eenzelfde boek.) Faculteit f heeft een exemplaar e van een bepaald boek en faculteit ff heeft een examplaar ee van datzelfde boek. Merk op dat het boek dat f met een faculteit gemeenschappelijk heeft verschillend kan zijn per faculteit. Merk ook op dat wanneer f en ff dezelfde faculteit zijn de conditie triviaal voldaan is door e en ee eenzelfde exemplaar van een boek in de faculteit f te laten zijn. { t f exemplaar ( f[faculteit] = t[faculteit] ff exemplaar ( ee exemplaar ( ee[faculteit] = ff[faculteit] e exemplaar ( e[faculteit] = f[faculteit] e[isbn] = ee[isbn] ) ) ) } 4. Leg in normaal klinkend Nederlands uit wat er in de volgende queries wordt gevraagd. a. faculteit ( exemplaar ) faculteit ( exemplaar uitlening ) Geef de faculteiten waarvan nog geen enkele medewerker ooit een boek heeft geleend van zijn eigen faculteit. b. { t e exemplaar ( t[faculteit] = e[faculteit] b boek ( b[isbn] = e[isbn] f exemplaar ( u uitlening ( ee exemplaar ( (u[faculteit] = f[faculteit] ee[barcode] = u[barcode] ee[isbn] = b[isbn] ) ee[faculteit] e[faculteit] ) ) ) ) ) } Geef de faculteiten die een boek hebben dat nog niet door leners van alle faculteiten bij die (eerste) faculteit is geleend.

5. We hebben een relatieschema R, met attributen {A, B, C} en functionele afhankelijkheden {A B, B C}. a. We kunnen dit schema decomponeren in R1 met attributen {A, B} en R2 met attributen {A, C}. Is dit een lossless join decompositie? Is ze dependency preserving? In welke normaalvorm is deze decompositie? Motiveer elk onderdeel van je antwoord. Uit A B en B C volgt A ABC, dus A is een supersleutel. R1 en R2 hebben A als enige gemeenschappelijk attribuut. Aangezien dit een supersleutel is is de decompositie een lossless-join decompositie. In R1 geldt A B (en A AB) als enige niet-triviale beperking, en in R2 geldt A C (en A AC) als enige niet-triviale beperking. Hieruit kunnen we niet B C afleiden. Die kan alleen gecontroleerd worden in R1 R2. Bijgevolg is de decomposite niet dependency-preserving. R1 en R2 zijn in BCNF (en dus ook in 3NF) want elke relatie met maar twee attributen (en waarin Ø geen supersleutel is) is in BCNF. b. We kunnen dit schema ook decomponeren in R2 met attributen {A, C} en R3 met attributen {B, C}. Is dit een lossless join decompositie? Is ze dependency preserving? In welke normaalvorm is deze decompositie? Motiveer elk onderdeel van je antwoord. R2 en R3 hebben het attribuut C als (enige) gemeenschappelijke attribuut. Maar C A geldt niet en C B ook niet, dus deze decompositie is geen lossless-join decompositie. in R2 geldt A C (en A AC) als enige niet-triviale beperking, en in R3 geldt B C (en B BC) als enige niet-triviale beperking. Hieruit kunnen we niet A B afleiden. Die kan alleen gecontroleerd worden in R1 R2. Bijgevolg is de decomposite niet dependency-preserving. R2 en R3 zijn in BCNF (en dus ook in 3NF) want elke relatie met maar twee attributen (en waarin Ø geen supersleutel is) is in BCNF.

6. Neem een relatieschema R met attributen { A, B, C }. In dit schema geldt de multivalued afhankelijkheid A B. Behalve logische gevolgen hiervan, inclusief triviale afhankelijkheden gelden er geen andere beperkingen in R. Geldt in R dan ook B C? Bewijs de correctheid van je antwoord. Neem de volgende tabel: A B C 0 0 0 1 0 1 A B geldt triviaal in deze tabel want opdat A B niet zou gelden moeten we tenminste twee tupels met dezelfde A waarde vinden. B C geldt niet in deze tabel want daarvoor zouden we ook de tupels 1 0 0 0 0 1 moeten hebben. We hebben dus een tegenvoorbeeld tegen de bewering dat als A B geldt dan ook B C zou gelden.