TI2505/TI2500 Informatie- en Datamodellering



Vergelijkbare documenten
TI2500 Informatie en Datamodellering

TI2500 Informatie en Datamodellering

TI2500 Informatie en Datamodellering

IN2105/IN2410 Databases

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

Databases (INFODB) 24 januari 2007

Tentamen Databases voor ica

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

Tentamen Databases voor iku

Databases (INFODB) 20 april 2010

Tentamen Informatica 6, 2IJ60,

Tentamen Databases voor ica

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

EXAMEN juni 2016 Gegevensbanken

Query-verwerking en optimalisatie

Datamodelleren en databases 2011

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

IN2105/IN2410 Databases

Normaliseren versie 1.1

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

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

Relationele Databases 2002/2003

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

Oplossingen Datamining 2II15 Juni 2008

Introductie (relationele) databases

Databases - Inleiding

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

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank

TI1500 Web- en Databasetechnologie

Transaction management.

Begrippen van transactieverwerking

2. Geef een voorbeeld van hoe datamining gebruikt kan worden om frauduleuze geldtransacties te identificeren.

Examen Algoritmen en Datastructuren III

Relationele Databases 2002/2003

Relationele Databases 2002/2003

Examen Algoritmen en Datastructuren III

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

de praktijk: tabellen

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

Data Manipulation Language

Structured Query Language (SQL)

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Tentamen Gegevensbanken ( ) 3 februari 2012

Dataconversie met Oracle Spatial

Tentamen Gegevensbanken (211074) 29 oktober 2009

SQL datadefinitietaal

Relationele databanken

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

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

Tentamen TI1300 en IN1305-A (Redeneren en) Logica

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

1. Inleiding Inleiding SQL Inleiding Database, databaseserver en databasetaal Het relationele model...

11. Het selecteren van gegevens deel II

Les 2 Eenvoudige queries

Datastructuren Uitwerking jan

Formeel Denken 2014 Uitwerkingen Tentamen

Relationele Databases 2002/2003

EMBEDDED SQL. Inleiding. Queries en update-opdrachten. Embedden en hostvariabelen

Tentamen Gegevensbanken (211074) 2 februari 2007

Tentamen TI1300 en IN1305-A (Redeneren en) Logica

Examen Datastructuren en Algoritmen II

databases & SQL - antwoorden

Inhoud. Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2

Uitwerkingen Sum of Us

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

Wouter Geraedts Processen & Processoren

Miniles gegevensbanken bevragen met SQL

1.1 Een database ontwerpen voor een webliografie

PROGRAMMA Vak: informatica..

Query SQL Boekje. Fredrik Hamer

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

Indexen.

Redundancy Normaalvormen

7. Het selecteren van gegevens

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

Relaties deel 2. Vierde college

Voer de gegevens in in een tabel. Definieer de drie kolommen van de tabel en kies als kolomnamen groep, vooraf en achteraf.

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

Databases en SQL Foundation (DBSQLF.NL)

Informatica toets vwo 6 Databases

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica

Les S-01: De basisbeginselen van SQL

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

Talen & Automaten. Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie 9 mei 2008

DB architectuur.

opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens

Proeftentamen in1211 Computersystemen I (NB de onderstreepte opgaven zijn geschikt voor de tussentoets)

Examen Datastructuren en Algoritmen II

Zomercursus Wiskunde. Katholieke Universiteit Leuven Groep Wetenschap & Technologie. September 2008

Zelftest DB2 for z/os basiscursus

6. Het maken van een database

Verzamelingen deel 3. Derde college

Tutorial. Microsoft Access 2003

Import via NatSync. Presentatie René Merx School voor de Toekomst

Macro s. 4.2 Een macro maken

Koppeling met een database

1. Databanken. Wat is een databank? Verschillende opslagmethodes

Transcriptie:

TECHNISCHE UNIVERSITEIT DELFT Faculteit Elektrotechniek, Wiskunde en Informatica Uitwerkingen van het Tentamen TI2505/TI2500 Informatie- en Datamodellering Maandag, 14 april 2014 18u30-21u30 Dit tentamen bestaat uit 11 delen, elk met een aantal open vragen. Van alle vragen dienen de antwoorden op het gewone antwoordblad(en) ingevuld te worden. Kladpapier wordt niet nagekeken Deel Punten 1 8 2 10 3 10 4 5 5 10 20 7 5 8 5 9 10 10 8 11 9 Totaal 100 Het gebruik van de boeken Database Systems: Global Edition, /E en Fundamentals of Database Systems door Ramez Elmasri en Shamkant Navathe is toegestaan, evenals slides, oude tentamens met uitwerkingen en eigen aantekeningen. Vul je naam, studienummer en studierichting in op ieder antwoordblad, en op het eerste antwoordblad of je dit tentamen doet voor TI2500 of T2505. Als het tentamen voor TI2500 doet hoef je deel 11 niet te maken. Veel succes TI2505/TI2500, tentamen, bladzijde 1 van 12

Deel 1 Relationele Algebra (8 punten) Vraag 1. Beschouw het volgende relationele schema zoals ook gebruikt in het boek: EMPLOYEE(Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno) DEPARTMENT(Dname, Dnumber, Mgr_ssn, Mgr_start_date) DEPT_LOCATIONS(Dnumber, Dlocation) PROJECT(Pname, Pnumber, Plocation, Dnum) WORKS_ON(Essn, Pno, Hours) DEPENDENT(Essn, Dependent_name, Sex, Bdate, Relationship) Geef voor de volgende queries de algebra-expressie die deze queries uitdrukt met de operatoren zoals besproken in Hfdst. van het boek. Dit mag net zoals in het boek in de vorm van een enkele expressie of voor ingewikkelde queries in de vorm <tabel> <algebra expressie>; <tabel> <algebra expressie>; ; RESULT <algebra expressie>. a) [4pt] Geef de namen van de departementen die een project hebben waarvan de locatie niet die van het departement is. Antwoord: DEPPROJ := (DEPARTMENT * DEPT_LOCATIONS) Dnumber=Dnum PROJECT; RESULT := π Dname (σ Dlocation Plocation (DEPPROJ)); Uitleg: De natural join koppelt departementen en hun locaties, omdat DEPARTMENT en DEPT_LOCATIONS exact de foreign key Dnumber gemeenschappelijk hebben. Merk op dat je daarom niet een gewone equijoin kunt gebruiken zonder een renaming toe te passen. Vervolgens koppelt de join met PROJECT de project-informatie eraan vast. In de volgende regel selecteren we dan de combinaties waarvoor de lokatie van het department en de lokatie verschillend zij, en tenslotte projecteren we alleen de naam van het departement. b) [4pt] Geef de namen van de departementen waarin minstens 3 werknemers alleen vrouwelijke dependenten hebben. Antwoord: MALEDEPS := π Ssn (EMPLOYEE Ssn=Essn σ Sex= M (DEPENDENT)); NOMALEDEPS := π Ssn (EMPLOYEE) - MALDEPS; DEPTNMDEMPS := DEPARTMENT Dnumber=Dno NOMALEDEPS; DEPTCOUNT := Dname F COUNT Dnumber (DEPTNMDEMPS); RESULT := π Dname (σ COUNT Dumber 3 (DEPTCOUNT)); Uitleg: In MALEDEPS combineren we alle werknemers met hun mannelijke dependenten en projecteren we vervolgens op Ssn. Dus we krijgen dan de Ssn s van employees met minstens één mannelijke dependent. Voor NAMELEDEPS trekken we deze af van de set van alle ssn s, en krijgen dan dus de ssn s van alle werknmers die geen mannelijke dependenten TI2505/TI2500, tentamen, bladzijde 2 van 12

hebben. Deze combineren we met de afdelingen waarvoor ze werken in DEPTNMDEMPS. Vervolgens groeperen we op Dname (want aannemlijk uniek is per department) en tellen het aantal records per groep in DEPTCOUNT. Tenslote selecteren we alleen die groepen waarvan het aantal 3 of groter is en projecteren tenslotte op de departementsnaam. Deel 2 Normaalvormen (10 punten) Vraag 2. [5pt] Beschouw een relatie met schema R(A, B, C, D, E) met sleutels AB en BC, en functionele dependencies {DE C, ABC D}. Wat is de hoogste normaalvorm waarin dit schema zit? Beargumenteer je antwoord. Antwoord: 3NF. Het is in 3NF want voor alle non-triviale FDs die eindigt in een non-prime attribute, dat is alleen ABC D, geldt de linkerkant een superset van een sleutel is. Het is niet in BCNF, want er is een non-trivial FD, nl. DE C, waarvan de linkerkant niet een superset is van een sleutel. Vraag 3. [5pt] Stel we hebben een relatie R(A, B, C, D) met multi-valued dependency AB ->> C en sleutels (candidate keys) A en B. Is deze relatie in 4NF? Laat zien waarom wel of niet. Antwoord: Ja. Het is in 4NF want voor alle non-triviale MVDs geldt dat de linkerkant een superset is van een sleutel. Deel 3 Normalizatie (10 punten) Vraag 4. [3pt] Beschouw een relatie met schema R(A, B, C, D, E, F) en de set van functionele dependencies S = {A B, BC D, AD E}. Bewijs met de regels van Armstrong (dus alleen IR1, IR2 en IR3) dat de functionele dependency AC E in S + zit. Antwoord: Het bewijs: 1. A B (gegeven) 2. AC ABC (augmentatie IR2, toegepast op 1, toevoeging van AC) 3. BC D (gegeven) 4. ABC AD (augmentatie IR2, toegepast op 3, toevoeging van A) 5. AC AD (transitiviteit IR3, toegepast op 2 en 4). AD E (gegeven) 7. AC E (transitiviteit, IR3, toegepast op 5 en ) Vraag 5. [3pt] Beschouw een relatie met schema R(A, B, C, D, E) met de set van functionele dependencies S = {B CD, D A}. Bepaal of de decompositie {AB, BCDE} de lossless join property heeft. Laat zien hoe je dit bepaald hebt. Antwoord: Het heeft inderdaad de lossless join property. Omdat het hier een binaire decompositie betreft kunnen we de NJB property gebruiken om dit te beslissen (zie blz. 541 in boek). Die zegt dat de lossless join property getest kan worden door te kijken of B A of B CDE in S + zit. Aangezien {B} + = {B, C [B CD], D [B CD], A [D A] } geldt niet {C, D, E} {B} + maar wel {A} {B} + en dus zit B A in S +. TI2505/TI2500, tentamen, bladzijde 3 van 12

Het kan ook met het algemenere algoritme 15.3 bepaald worden (wat werkt voor decomposities in meer dan 2 tabellen), en dan is het antwoord als volgt: 1. Initiële invulling van de tabel: A B C D E R1 a 1 a 2 b 1,3 b 1,4 b 1,5 R2 b 2,1 a 2 a 3 a 4 a 5 2. Toepassing van B CD A B C D E R1 a 1 a 2 a 3 a 4 b 1,5 R2 b 2,1 a 2 a 3 a 4 a 5 3. Toepassing van D A: A B C D E R1 a 1 a 2 a 3 a 4 b 1,5 R2 a 1 a 2 a 3 a 4 a 5 4. Verdere toepassing van de dependencies levert geen verdere veranderingen op. 5. Er is inderdaad een rij met alleen a tjes: die voor R2. Dus concluderen we dat de decompositie de lossless/nonadditive join property heeft. Vraag. Beschouw een relatie met schema R(A, B, C, D, E, F, G) en de set van functionele dependencies S = {AB CDE, BCD F, F B}. a) [3pt] Bepaal een decomposite naar een BCNF schema met de nonadditive join property volgens algoritme 15.5 in het boek en slides. Geef per component ook de sleutels. Antwoord: We bepalen eerst de sleutels van de start-tabel. Dat zijn in dit geval: {AFG, ABG}. Alle dependencies overtreden de BCNF regel, dus we kunnen kiezen met welke we willen beginnen om af te splitsen. Elke keuze is goed, maar we geven hier maar 1 uitwerking. We splitsen AB CDE af, en bepalen per component de sleutels: R1(A, B, C, D, E) met sleutels {AB} en lokale dependencies { AB CDE } R2(A, B, F, G) met sleutels {AFG} en lokale dependencies { F B } Binnen R2 hebben we nu nog de dependencies { F B } en deze overtreedt BCNF, dus splitsen we R2, resulterend in: R3(B, F) met sleutels { F } en lokale dependencies { F B} R4(A, F, G) met sleutels { AFG } en lokale dependencies { } Binnen deze relaties gelden er verder geen FDs die BCNF overtreden, en dus zijn we in BCNF. b) [1pt] Is deze decompositie dependency preserving? Beargumenteer je antwoord. Antwoord: Die dependencies die als lokale dependencies zijn overgebleven zijn: { AB CDE, F B }. TI2505/TI2500, tentamen, bladzijde 4 van 12

Daaruit kunenn we niet BCD F afleiden, immers {BCD} + = {BCD} en bevat geen F. De decompositie is dus niet dependency preserving. Deel 4 File organizatie (5 punten) Vraag 7. [5pt] Een PARTS bestand met Part# als de hash sleutel bevat records met de volgende Part# waardes (binair gepresenteerd): 100001, 000110, 111011, 111101 en 101010. Laad deze records in een lege expandable hash file gebaseerd op extendible hashing. Neem aan dat buckets maximal twee records kunnen bevatten. Laat zowel de globale als lokale diepte zien. Begin met globale diepte d=0. Gebruik de hash-functie h(k) = K mod 1. Antwoord: Merk op dat alleen de laatste vier bits van de sleutel relevant zijn vanwege de definitie van h. Deze zijn telkens in vet aangegeven. Van deze bits nemen we als eerste de most significant bits als index voor de directory. Na 100001, 000110, 111011, 111101: Directory (d = 1) Val Ptr 0 B1 1 B2 B1 (d =1) 100001 000110 B2 (d =1) 111011 111101 Na 101010 (B2 splitst in B2 en B3) Directory (d = 2) Val Ptr 00 B1 01 B1 10 B2 11 B3 B1 (d =1) 100001 000110 B2 (d =2) 111011 101010 B3 (d =2) 101101 Deel 5 Indexering (10 punten) Vraag 8. [10pt] Een PARTS bestand met Part# als sleutelveld bevat records met de volgende Part# waardes: 11, 7,, 3, 9, 1, 10, 14, 15, 13, 12, 8. Stel dat deze zoekwaardes in deze volgorde ingevoegd worden in een lege B + -boom van orde p=4 en p leaf =4. Laat zien hoe de uiteindelijke B + -boom er uitziet. [11] TI2505/TI2500, tentamen, bladzijde 5 van 12

[7, 11] [, 7, 11] [3,, 7, 11]. [7, 9, 11]. [3, ]. [7, 9, 11]. [1, 3, ]. [7, 9, 10, 11]. [1, 3, ]. [10, 11, 14] 9. [7, 9]. [1, 3, ]. [10, 11, 14, 15] 9. [7, 9]. [1, 3, ]. [13, 14, 15] 11. [10, 11] 9. [7, 9]. [1, 3, ]. [12, 13, 14, 15] 11. [10, 11] 9. [7, 9]. [1, 3, ]. [12, 13, 14, 15] 11. [10, 11] 9. [7, 8, 9]. [1, 3, ] TI2505/TI2500, tentamen, bladzijde van 12

9 11 1 3 7 8 9 10 11 12 13 14 15 Deel Queryoptimalisatie (20 punten) Vraag 9. [2pt] Hoevel join orders zijn er voor een query die tabellen joint. Antwoord:! = 720. Vraag 10. [5pt] Een bestand van 409 blocks moet gesorteerd worden met een beschikbare bufferruimte van 1 blocks. Hoeveel passes zijn er nodig in de merge-fase van het external sort-merge algoritme? Antwoord: Na de eerste fase hebben we 409/1 = 25 initial runs. Vervolgens kunnen we in elke pass 15 runs mergen. Dus zijn er log 15 (25) = 3 passes nodig. Vraag 11. [8pt] Beschouw de volgende SQL-query voor het schema van vraag 1: SELECT Fname, Lname, Dlocation FROM EMPLOYEE, DEPARTMENT D, DEPT_LOCATIONS L WHERE Salary>100,000 AND Dno=Dnumber AND D.Dnumber=L.Dnumber; Geef twee verschillende query trees voor deze query. Antwoord: Merk op dat we hier niet zomaar DEPARTMENT en DEPT_LOCATIONS mogen joinen omdat de headers kolommen gemeenschappelijk hebben. We zullen de RENAME operatie (ρ) moeten gebruiken om conflicten te vermijden. π Fname, Lname, Dlocation π Fname, Lname, Dlocation σ Salary>100,000 AND Dno=D.Dnumber AND D.Dnumber=L.Dnumber D.Dnumber=L.Dnumber ρ L π Fname, Lname, Dnumber π Dnumber, Dlocation EMP ρ D DEPT_LOC Dno=Dnumber π Fname, Lname, Dno π Dnumber ρ L DEPT_LOC DEPT σ Salary>100,000 ρ D EMP DEPT TI2505/TI2500, tentamen, bladzijde 7 van 12

Vraag 12. [5pt] In je relationele algebra is de join-operatie associatief (associative). Leg uit waarom dit belangrijk is voor query-optimalisatie. Antwoord: Het is mogelijk door de associativiteitsregels om verschillende algebra-expressies te kiezen die een verschillende volgorde van joinen weergeven. Bijvoorbeeld de join A B C kan uitgevoerd worden volgens (A B) C of A (B C). In het eerste geval worden eerst A en B gekoppeld, en het resultaat daarvan daarna met C, en in het tweede geval eerst B en C en daarna met A. Samen met commutativiteit (het feit dat (A B) (B A)) staat dit het systeem toe om de join-volgorde vrij te kiezen. Deel 7 Databasetuning (5 punten) Vraag 13. [5pt] Geef een mogelijke reden waarom het in een bepaalde situatie gunstig zou kunnen zijn om een clustered index om te zetten in een non-clustered index. Antwoord: Voor een non-clustered index is niet nodig om de records in the tabel zelf in een bepaalde volgorder gesorteerd te houden. Dus de updates zullen efficiënter worden als de index non-clustered wordt. Deel 8 Transacties (5 punten) Vraag 14. [5pt] Beschouw de drie transacties T 1, T 2 en T 3, en het schedule S van deze transacties zoals beneden gegeven. Teken de precedence graph voor S, en bepaal of het wel of niet serialiseerbaar is. Als het schedule serialiseerbaar is, geef dan een equivalent serial schedule. T 1 : r 1 (Y); w 1 (Z); w 1 (X); r 1 (X); T 2 : r 2 (X); w 2 (Z); w 2 (Y); T 3 : r 3 (X); w 3 (Z); w 3 (X); S: r 3 (X); r 1 (Y); w 3 (Z); w 3 (X); w 1 (Z); w 1 (X); r 2 (X); w 2 (Z); w 2 (Y); r 1 (X); Antwoord: Links de lijst van de conflicterende operaties die een pijl in de precedence graaf veroorzaken, en rechts de graaf. r 3 (X).. w 1 (X) => T 3 T 1 r 1 (Y).. w 2 (Y) => T 1 T 2 w 3 (Z).. w 1 (Z) => T 3 T 1 w 3 (Z).. w 2 (Z) => T 3 T 2 w 3 (X).. w 1 (X) => T 3 T 1 w 3 (X).. r 2 (X) => T 3 T 2 w 3 (X).. r 1 (X) => T 3 T 1 w 1 (Z).. w 2 (Z) => T 1 T 2 w 1 (X).. r 2 (X) => T 1 T 2 T 3 T 1 X, Z X, Y, Z X, Z T 2 Er is geen cykel in de graaf, dus het schedule is serialiseerbaar. Een mogelijke volgorde is T 3 T 1 T 2 (dus eerst alle operaties van T 3, dan die van T 2 en tenslotte die van T 1 ). TI2505/TI2500, tentamen, bladzijde 8 van 12

Deel 9 Concurrency protocollen (10 punten) Vraag 15. [5pt] Beschouw het schedule S uit vraag 14. Stel we houden ons aan het shared / exclusive locking scheme en aan het strict two-phase locking protocol. a) Geef aan na elke operatie welke locks er liggen. Antwoord: We geven in een regel aan welke locks er liggen na de genoemde operatie, inclusief de locks aangevraagd voor die operatie die tussen haakjes staan. We nemen aan dat als een transactie klaar is er meteen een commit operatie volgt, en dus volgens strict two-phase locking alle locks vrijgeeft. Als een read-lock promoveert tot een write-lock geven we alleen het write-lock aan. De rode gevallen geven aan waar een gevraagd lock conflicteert met al aanwezige locks. Oper. X Y Z r 3 (X) (r 3 ) r 1 (Y) r 3 (r 1 ) w 3 (Z) r 3 r 1 (w 3 ) w 3 (X) (w 3 ) r 1 w 3 c 3 r 1 w 1 (Z) r 1 (w 1 ) w 1 (X) (w 1 ) r 1 w 1 r 2 (X) w 1, (r 2 ) r 1 w 1 w 2 (Z) w 1, r 2 r 1 w 1, (w 2 ) w 2 (Y) w 1, r 2 r 1, (w 2 ) w 1, w 2 c 2 w 1 r 1 w 1 r 1 (X) w 1, (r 1 ) r 1 w 1 c 1 b) Bepaal of S wordt toegestaan onder de genoemde protocollen. Zo nee, geef aan waarom niet. Antwoord: Het is niet toegestaan. Vlak voor r 1 (Z) conflicteren op Z de locks w 3 en r 1. Vraag 1. [5pt] Beschouw opnieuw het schedule S uit vraag 14. Bepaal of deze toegestaan is volgens het basic timestamp ordering (TO) algoritme. Laat zien hoe je dit hebt bepaald. Antwoord: We volgen de executie van S. De timestamps van de transacties worden aangenomen te zijn bepaald door hun eerste operatie, dus TS(T 1 ) = 2, TS(T 2 ) = 7 en TS(T 3 ) = 1. Na elke stap registreren we de read timestamp (Rd_ts(D)) en write timestamp (Wr_ts(D)) van elk data item (D=X,Y,Z). TI2505/TI2500, tentamen, bladzijde 9 van 12

T Operat. Rd_ts(X) Wr_ts(X) Rd_ts(Y) Wr_ts(Y) Rd_ts(Z) Wr_ts(Z) 1 r 3 (X) 1 - - - - - 2 r 1 (Y) 1-2 - - - 3 w 3 (Z) 1-2 - - 1 4 w 3 (X) 1 1 2 - - 1 5 w 1 (Z) 1 1 2 - - 2 w 1 (X) 1 2 2 - - 2 7 r 2 (X) 7 2 2 - - 2 8 w 2 (Z) 7 2 2 - - 7 9 w 2 (Y) 7 2 2 7-7 10 r 1 (X) 7 2 2 7-7 Er is op geen enkel moment een conflict, dus dit schedule is toegestaan. Deel 10 Recovery protocollen (8 punten) Vraag 17. [8pt] Beschouw de volgende geabstraheerde system log na een crash: [start, T1] [write, T1, D, 15, 20] [start, T2] [write, T2, B, 15, 12] [start, T4] [write, T4, B, 25, 15] [start, T3] [write, T3, A, 20, 30] [write, T4, A, 10, 20] [commit, T1] [commit, T4] [checkpoint] [commit, T3] [ write, T2, D, 20, 25] De log-records hebben de volgende betekenis: [start, Ti] = start van transactie Ti [write, Ti, X, old, new] = update van data item X van waarde old naar new [commit, Ti] = commit van transactie Ti [checkpoint] = checkpoint Veronderstel dat we voor de recovery de procedure RIU_M (UNDO/REDO with checkpoints) volgen (zie blz. 797). Welke operaties worden dan in welke volgorde uitgevoerd? Gebruik dezelfde notatie als voor de getoonde system log. Antwoord: We volgen de beschreven procedure van drie stappen: 1. We bepalen eerst de twee lijsten: a. Committed transactions since last checkpoint: T3 b. Active transactions: T2 2. Vervolgens doen we een undo voor de write operaties van de actieve transacties, in de omgekeerde volgorde van waarin ze in de log staan. Dit zijn in de log de volgende operaties voor T2 en T4: [write, T2, B, 15, 12] [ write, T2, D, 20, 25] Dus dat keren we nu om, en draaien daarbij ook oude en nieuwe waarde om: TI2505/TI2500, tentamen, bladzijde 10 van 12

[write, T2, D, 25, 20] [write, T2, B, 12, 15] 3. Vervolgens doen we een redo voor write operaties van de committed transactions, (T3) in de volgorde waarin ze in de log voorkomen na de laatste checkpoint. Dat zijn de volgende operaties: - geen - In totaal levert dat dus het volgende UNDO/REDO schedule: [write, T2, D, 25, 20] [write, T2, B, 12, 15] Deel 11 Semantic Web en RDF (9 punten) Vraag 18. [4pt] Beschouw de volgende RDF graaf: ex:vegetarianpizza rdfs:subclassof ex:pizza. ex:nonvegetarianpizza rdfs:subclassof ex:pizza. ex:quattroformaggi rdf:type ex:vegetarianpizza. Geef alle triples die hier uit afgeleid worden door de RDFS inferentieregels (inference rules). Gebruik eventueel voor de efficiëntie afkortingen voor de URIs zoals ex:vegp, rdfs:sco, ex:qf, etc. Antwoord: Regel: reflexiviteit van rdfs:subclassof ex:vegp rdfs:sco ex:vegp ex:pizza rdfs:sco ex:pizza ex:nonvegp rdfs:sco ex:nonvegp Regel: transitiviteit van rdfs:subclassof - Regel: type overerving ex:qf rdf:type ex:pizza. Regel: property type rdfs:sco rdf:type rdf:property. rdf:type rdf:type rdf:property. Vraag 19. [5pt] Beschouw de volgende RDF graaf: dbpedia:mount_etna rdf:type umbel-sc:volcano ; rdfs:label "Etna" ; p:location dbpedia:italy. dbpedia:mount_baker rdf:type umbel-sc:volcano ; p:location dbpedia:united_states. dbpedia:beerenberg rdf:type umbel-sc:volcano ; rdfs:label "Beerenberg"@en ; p:location dbpedia:norway. Formuleer in SPARQL de volgende query over dergelijke RDF data: Op welke locaties TI2505/TI2500, tentamen, bladzijde 11 van 12

staat een vulkaan met namen in minstens twee verschillend talen? Maak eventuele aannames over de structuur van de RDF-graaf expliciet. Antwoord: SELECT?loc WHERE {?v rdf:type umbel-sc:volcano.?v p:location?loc.?v rdfs:label?lab1.?v rdfs:label?lab2. FILTER (LANG(?lab1)!= LANG(?lab2) ) } Einde van het tentamen TI2505/TI2500, tentamen, bladzijde 12 van 12