Lena Strömbäck Pawel Pietrzak 2004-06-02 Skriftlig tentamen i kursen TDDB48 Databasteknik Datum: 2003-06-02 Tid: 14-18 Lokal: GAR Hjälpmedel: Engelsk ordlista tillåten ej elektronisk iniräknare ej programmerbar Poängränser: Tentamen består av två delar Den praktiska delen kräver 10 poäng för godkänt Den teoretiska delen kräver 10 poäng för godkänt För betyg 4 krävs ungefär 28 poäng För betyg 5 krävs ungefär 36 poäng Resultat annonseras inom två veckor. Jourhavande lärare: Lena Strömbäck, 0709-39 6776, 013-16 46 99, 013-28 23 24 Pawel Pietrzak, 013-210 117, 013 28 24 10 An English version of the questions is found at the back of each page. Använd ett papper för varje fråga även om du bara skriver en rad på det. Skriv namn och personnummer på varje blad. Skriv bara på ena sidan av papperet. Ge relevanta svar på frågorna. Poängavdrag kan ges för svar som inte är direkta svar på frågan
Del 1: Praktisk Uppgift 1 (6 p): Datamodellering med EER-diagram Ett företag som hyr ut lägenheter (Stångåstaden) vill bygga om sin databas för att möta de krav som beskrivs nedan. Först och främst vill de för sina lägenheter lagra följande information: Adress (gata, nummer, postnummer, stad) Våning Antal rum Bostadsyta Finns det hiss i byggnaden? (Ja eller nej) Hyra Lägenheterna bebos av hyresgäster, personer beskrivna av namn och personnummer. Företaget vill hålla reda på när personerna flyttade in i lägenheterna. E av hyresgästerna för varje lägenhet kallas räkningsmottagare och är den som betalar hyran. Hyran betalas månadsvis, när företaget sänder en faktura till räkningsmottagaren. Fakturan innehåller: sista betalningsdag, belopp som ska betalas och OCR nummer. Företaget vill hålla reda på om fakturan betalats i tid eller inte. Om den inte betalats ska en påminnelse skickas till räkningsmottagaren. Påminnelsen är om en särskild hyresfaktura och den är själv en faktura som innehåller den obetalade räkningen och en påminnelseavgift. Alla skickade fakturor och påminnelser ska sparas i systemet. Uppgift 2 (4p): EER -> relationer Översätt följande EER-diagram till ett relationsschema. Förklara hur översättningen gjorts och om du väljer att göra någonting annorlunda än som beskrivs i boken måste detta motiveras. Kom ihåg att det inte bara är ditt slutliga relationsschema utan också dina antaganden och motiveringar som avgör bedömningen av ditt resultat. Course# ame Grade Course Takes PR Has parts Student PartID Part Passed ame d Grade Theory Lab Project
Uppgift 3 (6p): SQL Antag följande databasschema: PASSAGERARE Passr amn BOKIG Passr Flightr FlightDatum BoknDatum Pris Passagerare(Passr) Flightr+FlightDatum refererar FLIGHT(Flightr,Datum) FLIGHT Flightr Datum Från Till Formulera följande SQL-frågor till databasen: a) Vart flög John Smith 2002-02-02? (1p) b) Vad är medelpriset på alla flygningar till Paris? (2p) c) Vart flyger ils ilsson oftast? (3p) Uppgift 4 (4p): ormalisering. Studera följande relationsschema: Kurskod Lärare Kursnamn Datum/Tid Rum Kapacitet Förutom de beroenden som ges av primärnyckeln har vi också: Kurskod Æ Kursnamn, Lärare Rum Æ Kapacitet a) Vilken normalform är tabellen i? otivera! (1p) b) Beskriv vilka problem man kan få när man vill manipulera data i tabellen. (1p) c) ormalisera tabellen till BCF. (2p)
Del 2: Teoretisk Uppgift 5 (4p): Datastrukturer a) Beskriv de viktigaste egenskaperna för B+-träd.(2p) b) Antag ett B+-träd med p (maximalt antal barn) satt till 3. Demonstrera hur insättning i B- träd fungerar genom att sätta in värdena 1,5,4,3,2 (i denna ordning) i det initialt tomma trädet. (1p) c) Antag att vi vill skapa ett index baserat på ett B+-träd där blockstorleken är 100 bytes pekarstorleken är 4 och storleken på sökfältet är 10. Vilket är det mest fördelaktiga värdet för p för detta B+-träd? (1p) Uppgift 6 (4p): Relationsmodellen och relationsalgebra a) Skriv följande SQL-fråga i relationsalgebra: (2p) SELECT name, course FRO student, takes WHERE student.ppn=takes.ppn b) Vad är skillnaden mellan yttre och inre join? Förklara genom att referera till ovanstående SQL uttryck. (2p) Uppgift 7 (4p): Serialiserbarhet Studera följande transaktionsschema. T1 Read-item(other-account); other-account := other-account + 2000; Write-item(other-account); Read-item(my-account); my-account := my-account + 2000; Write-item(my-account); T2 Read-item(my-account); my-account := my-account + 1000; Write-item(my-account); a) Är schemat serialiserbart? Visa hur du kom fram till detta. (2p) b) Visa hur tvåfaslåsning fungerar genom att modifiera transaktionen T1 ovan genom att lägga till lämpliga instruktioner. (Det räcker att du gör det för T1 du behöver inte ta hänsyn till resten av transaktionsschemat.) (2p)
Uppgift 8 (3p): Frågeoptimering Vad är syftet med heuristisk frågeoptimering? Beskriv kortfattat hur algoritmen fungerar. Uppgift 9 (5): Databasåterställning a) Beskriv metoden för återställning med omedelbar uppdatering (eng. recovery with immediate update). Ange vilken variant du använder. Använd systemloggen nedan för att exemplifiera metoden. (Observera att för varje write-item lagras bara 1 värde i systemloggen nedan.) (2p) b) Visa alla steg som görs vid återställningen av databasen. (2p) c) Ange för varje variabel (A, B, C, D och E) vad värdet är efter återställningen. (Om det inte går att få fram från systemloggen, ange detta.) (1p) System log: Start-transaction T1 Write-item T1, A, 10 Checkpoint Start-transaction T2 Write-item T1, B, 10 Write-item T2, C, 10 Commit T1 Start-transaction T3 Start-transaction T4 Write-item T3, D, 20 Write-item T4, E, 5 Write-item T2, C, 30 Commit T2 Æsystem crash