LiTH, Linköpings tekniska högskola IDA, Institutionen för datavetenskap Jose M. Peña 2010-08-10 Lokal TER1 och TERC. Tillåtna hjälpmedel Lexikon, miniräknare. TENTAMEN TDDD12 Databasteknik TDDD46 Databasteknik 16 augusti 2010, kl 14-18 Poänggränser Du kan få maximalt 29 poäng. För att få godkänt, betyg 3, krävs minst 7 poäng i respektive tentamensdel (Praktik och Teori). För betygen 4 och 5 krävs totalt 20 respektive 26 poäng. Lärarjour Under tentamenstiden finns möjlighet att ställa frågor och få förtydliganden från Jose M. Peña, tel. 013 281651, som besöker salen kl. 15 och 17, dels från Juha Takkinen, tel. 013 282603, som besöker salen kl. 15, och dels från Patrick Lambrix, tel. 013282605, som besöker salen kl. 17. Instruktioner Skriv klart och tydligt. Ge relevanta och motiverade svar på endast det som efterfrågas. Antaganden utöver de som står i uppgiften måste anges. Gjorda antaganden får naturligtvis inte förändra den givna uppgiften. Du kan svara på svenska eller engelska. Lycka till! 1(6)
Praktisk del (15 p) Uppgift 1. EER-modellering (5p): Läs hela övningen innan du börjar. Ett fotoforum innehåller mycket information som den måste hålla reda på. Var och en av dess medlemmar har ett unikt ID, användarnamn och den utrustning medlemmen använder (kamera, objektiv och filter). Medlemmar kan ladda upp sina bilder till forumet. Varje foto har ett unikt ID och rubrik, samt information om den medlemmen som har laddat upp bilden och om vilken utrustning som har använts. Varje medlem kan ge kommentarer på bilderna. Forumet håller reda på kommentarerna. Forumet bjuder även in professionella fotografer, t.ex. journalister, som deras medlem med expert status. En kort biografi ges för varje medlem med expert status. Varje vecka väljs en bild som veckans bild. En bild kan bara veckans bild en gång. En medlem med expert status skriver en kort recension om veckans bild. För veckans bild lagras veckonumret, recensionen samt medlemmen med expert status som skrev recensionen. Skapa ett EER diagram för lösningen. 2(6)
Uppgift 2. SQL (1 + 1+ 1 + 3 = 6 p): Studera följande relationer som beskriver bordsplaceringen på ett bröllop: Persons: PersonId Name Sex 1 Victoria Female 2 Daniel Male 3 Carl Gustaf Male 4 Silvia Female 5 Lena Female Languages: LanguagePerson Language 1 English 2 Swedish 1 Swedish LanguagePerson is a foreign key referring to PersonId. Places: TablePerson Table Chair 1 1 1 2 1 2 3 2 1 4 2 2 TablePerson is a foreign key referring to PersonId Relationen Persons ger information om alla personer i databasen. Languages beskriver vilka språk dessa personer pratar and Places vid vilket bord och på vilken stol personerna är placerade under middagen. Skriv SQL-frågor för följande: a) Lista alla gäster som talar engelska. (1p) b) Lista namnen på alla personer ordnade efter bord som de är placerade vid. (1p) c) List alla personer som inte är placerade vid något bord. (1p) d) Syftet med placeringen är att alla personer ska ha åtminstone en person med ett gemensamt språk att prata. Lista alla bord där så är fallet. (3p) 3(6)
Uppgift 3. Översättning till relationer (4 p): R N M Aatt A Ratt 1 B C 1 S D M N Datt Översätt EER-diagrammet till ett relationsschema. (Du måste följa algoritmen du lärde dig i kursen). Markera primärnycklar med heldragen understrykning och främmande nycklar med streckad understrykning i schemat, med en pekare från den främmande nyckeln till det/de attribut som den främmande nyckeln refererar till. 4(6)
Teoretisk del (14 p) Uppgift 4. Normalisering (2 p): Normalizera (1NF 2NF 3NF BCNF) relationen R(A, B, C, D, E) med funktionella beroende (eng. functional dependencies) {AB CDE, D E, CD A}. Ange resultat och förklaring efter varje steg. Uppgift 5. Datastrukturer (1 + 1 + 2 = 4 p): Antag att vi har en tabell med 1.000.000 poster. Filen är sorterad enligt nyckel X. Varje post är 400 bytes lång. Databasen använder blockstorleken B = 4 096 bytes och posterna lagras obrutna (eng. unspanning). i) Hur många block behövs för att lagra denna tabell? ii) Antag att vi nu skapar ett sekundärindex baserat på en annan nyckeln Y där varje indexpost tar upp 8 bytes i minnesutrymme (4 bytes för nyckeln och 4 bytes för diskpekaren). Hur många block behövs för att lagra indexet? iii) Hur många block måste access:as för att hitta en post med ett givet värde för nyckeln Y a. när man inte använder något index alls, b. när man använder ett sekundärindex. Uppgift 6. Transaktioner och samtidighet (1 + 3 = 4 p): a. Är följande transaktionsschema serialiserbart? Motivera ditt svar. T1 read(x) x:=x+1 write(x) T2 read(x) x:=x+1 write(x) b. Beskriv ACID-egenskaperna för transaktioner. Ange för varje egenskap om serialiserbarhet är viktigt för att uppfylla egenskapen. Motivera ditt svar. 5(6)
Uppgift 7. Databasåterställning (3 + 1 = 4 p): a) Beskriv metoden för återställning med uppskjuten uppdatering (eng. recovery with deferred update). Använd systemloggen nedan för att exemplifiera metoden. Visa alla operationer som görs vid återställningen av databasen. I rätt ordning! b) Ger användningen av kontrollpunkter (eng. checkpoints) någon fördel i denna metod? Förklara ditt svar. Part of system log: Start-transaction T1 Write-item T1, A, 10 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, 50 Write-item T2, C, 20 Commit T2 system crash 6(6)