Tentamen i Databasteknik



Relevanta dokument
Tentamen i Databasteknik

Tentamen i Databasteknik

Tentamen. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

Tentamen i. Databasteknik

Tentamen för 1E1601. Måndag 10 mars 2003, kl Alla hjälpmedel tillåtna

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Idag. Databaskvalitet(??) Databaskvalitet... Databaskvalitet...

TENTAMEN. TDDD12 Databasteknik TDDD46 Databasteknik. 16 augusti 2010, kl 14-18

Dagens föreläsning. KTH & SU, CSC Databasteknik Föreläsning 10 sid 1

Vad du skall komma ihåg från tidigare föreläsningar. Dagens föreläsning. Evaluering av frågor. Data dictionary

An English version of the questions is found at the back of each page.

Tentamen för DD1370 Databasteknik och informationssystem

Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem

Lösningsförslag till tentamen för DD1370 Databasteknik och informationssystem

TENTAMEN TDDB77 Databaser och Bioinformatik 12 juni 2007, kl 14-18

Tentamen för DD1370 Databasteknik och informationssystem

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Tentamen för DD1370 Databasteknik och informationssystem

Lösningar till tentamen i EDAF75

TENTAMEN TDDB77 Databaser och Bioinformatik 22 augusti 2006, kl 14-18

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Idag. Exempel. Exempel modellen (1) Exempel...

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Tentamen för DD1370 Databasteknik och informationssystem

TENTAMEN TDDB77 Databaser och Bioinformatik 24 april 2004, kl 14-18

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Exempel-Tentamen III

Lösningsförslag till Exempel tentamen

Övningar i SQL. SQLAccess.doc Ove Lundgren

Tentamen i Databasteknik

Databaser - Design och programmering. Minnesteknik. Minnesteknik, forts. Hårddisk. Primärminne (kretsteknik) Fysisk design av databasen

Databaser - Design och programmering. Säkerhetsproblem. SQL-injektion. Databashanteraren. Transaktion. Exempel. Transaktionshantering och säkerhet

Tentamen ISGB01 (delkurs i ISGB24) Databasdesign 7,5 Poäng

Databaser Design och programmering Minnesteknik Minnesteknik, forts Utvecklingen Hårddisk Hårddisk, forts

Introduktion till frågespråket SQL (v0.91)

Tentamen för DD1370 Databasteknik och informationssystem

TENTAMEN TDDB77 Databaser och Bioinformatik 15 mars 2002, kl 14-18

Uppgift 1. (a) Ange tre orsaker hur felaktigheter i en databas kan uppsta. Till varje av dem, ange en lamplig metod som anvands som atgard mot dessa.

Lösningsförslag till. tentamen för 1E1601

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen. TDDB38 - Databasteknik

Tentamen i Datorteknik och - kommunikation, 2D1522/4K1522. Läs detta innan du börjar:

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

TDDI 60 Tekniska databaser

TENTAMEN TDDB77 Databaser och Bioinformatik 17 mars 2005, kl 8-12

Karlstads Universitet, Datavetenskap 1

TENTAMEN TDDB77 Databaser och Bioinformatik 19 april 2002, kl 14-18

Programmering II (ID1019) :00-11:00

Lösningsförslag till Tentamen,

GIS, databasteknik och kartografi. Kursmaterial för databasdelen

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

Lösningsförslag till tentamen för 1E1601

Tentamen. Databasmetodik Lördag 27 september 2014 kl

Databaser design och programmering Säkerhetsproblem Databashanteraren SQL-injektion

Databaser design och programmering. Transaktionshantering och säkerhet säkerhetsproblem fleranvändarproblem transaktioner låsning

Tentamen Databasteknik

16/12/14. Databasteknik och informationssystem DD1370. Dagens föreläsning (den sista!) Motivera med kokbok! Idag: Inga knappar L. Dagens föreläsning

Tentamen EIT:DB Databastmetodik 11/ kl Lösningsförslag

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar:

Normalisering. Varför? För att åstadkomma en så bra struktur i databasen som möjligt med minimalt med dubbellagrad info.

Databasteknik NADA, KTH & SU

Databaser Design och programmering. Fysisk design av databasen att ta hänsyn till implementationsaspekter: minnesteknik filstrukturer indexering

07/11/14. Databasteknik och informationssystem DD1370 F2. Allmänna frågor. Är Lab0 svårbegriplig? Nu: Clickers. Är Kurswebben svårbegriplig?

TDDI60 Tekniska databaser

Databaser. Vad du ska lära dig: Ordlista

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 2013 kl. 9-13

Svar till tentamen DATABASTEKNIK - 1DL poäng

Databasteknik för D1, SDU1 m fl

Databaser Design och programmering. Fysisk design av databasen att ta hänsyn till implementationsaspekter: minnesteknik filstrukturer indexering

Tentamen DATABASTEKNIK - 1DL116, 1MB025

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

Uppgift 1.8p (a) Ange tre orsaker hur felaktigheter i en databas kan uppstνa. Till varje av dem, ange en lämplig metod som används som νatgärd mot des

TENTAMEN DATABASKUNSKAP ITEK12

Idag. Hur vet vi att vår databas är tillräckligt bra?

08/11/13. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Deadline på tisdag

Tentamen DATABASTEKNIK - 1DL116

Viktigt! Glöm inte att skriva Tentamenskod på alla blad du lämnar in.

Databasutveckling Tabeller. tinyint 1 byte (0-255) Upp till 8 bytes

Minnesteknik. Minnen lämpliga för databaser. Minnesteknik, forts. Databaser design och programmering. temporärt/flyktig Snabbt Dyrt

Databasteknik för D1, SDU1 m fl

Tentamen plus lösningsförslag

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Karlstads Universitet, Datavetenskap 1

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Karlstads Universitet, Datavetenskap 1

ÖVNING 10 2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY! 3NF Hästnamn, Art, NY! NY! NY! NY! KursId, StartDatum, SlutDatum KursId NY!

Idag. Modellering. Varför modellera? Konceptuell modell Modelleringsverktyg Objektklasser Sambandsklasser Knepiga attribut Modelleringsprocessen

Transkript:

Tentamen i Databasteknik Tisdagen den 15 mars 2010 Tillåtna hjälpmedel: Allt skrivet material och räknedosa Använd bara framsidan på varje blad. Skriv max en uppgift per blad. Motivera allt, dokumentera egna antaganden. Oläslig/obegriplig lösning ger noll poäng. Max 70 poäng av den totala examinationen + bonus max 30 poäng Betygsgränser : KTH+SU+FoV F+ 43 p E 50 p D 57 p C 64 p B 71 p A 78 p Lycka till! Kjell

Tentamen i Databasteknik 1. 15 p En skivaffär vill hålla reda på skivor och de låtar som ingår, artister och vilka instrument de spelar, skivbolag, distributörer i olika länder och artistgrupper (orkestrar) och använder ett register med följande attribut: ANamn, Instrument, Grupp, GÅr, Land, Distributör, Dfax, SkivTitel, SÅr, SkivBolag, Sfax, Pris, Låt Vi har följande information om attributen: ANamn Artistens namn Instrument De instrument artisten spelar Grupp Namnet på den grupp artisten tillhör GÅr Året då gruppen bildades Land Landet där skivan producerades Distributör Vem distribuerar skivan i ett visst land Dfax Distributörens faxnr SkivTitel Skivans titel SÅr Skivans utgivningsår SkivBolag Skivbolaget som ger ut skivan Sfax Skivbolagets faxnr Pris Skivans pris Låt Namnet på en låt En låt kan ingå i flera skivor (samlingsskivor) Och en artist kan ha tillhört flera grupper. En skiva kan ha olika distributörer i olika länder. a (4 p) b (3 p) c (8 p) Utred vilka funktionella beroenden som finns i strukturen. En första ansats är att lägga alla termer i en enda tabell. Vilka för och nackdelar har en sådan lösning i det aktuella fallet? Normalisera successivt till 1NF, 2NF, 3NF och motivera alla åtgärder. 2. 15 p Givet varuhusdatabasen med följande databasstruktur: Anställd ( ( namn ), lön, chef, avd ) Försäljning ( ( avd, varunr ), volym ) Leverantör ( ( företag ), adress ) Lager ( ( företag, avd, varunr ), volym ) Avdelning ( ( avd ), våning ) Vara ( ( varunr ), typ ) där varunr, våning och volym är av typen integer och övriga av typen VarChar(30). a (4 p) Översätt följande uttryck i relationsalgebra till SQL: tmp(företag, varunr) π företag, varunr, våning (Lager Vara) tmp1(f, t) π företag, typ (σ våning = 2 (Vara tmp)) tmp2 fg count(t) AS n (tmp1) π c (tmp2 (G max(n) as n (tmp2)))

Tentamen i Databasteknik b (5 p) Översätt följande SQL-fråga till ett relationsalgebrauttryck: create view tmp(företag, n) as select företag, count(avd) from Lager, Vara where Lager.varunr = Vara.Varunr and typ = (select typ from Vara where varunr = 13) group by företag; select företag from tmp where n = (select max(n) from tmp) c (6 p) Skriv SQL-frågor mot varuhusdatabasen som besvarar följande frågor: i På vilken våning ligger den avdelningen som säljer störst volym av damskor? ii Vilka arbetar på den avdelning som har minst medellön? 3. 15 p En databas innehåller följande tabell R(A, B, C) där A och B är heltal i [0, 10000] och C är en sträng med längden 150 tecken. Tabellen innehåller 1000000 tupler. A, B är den enda kandidatnyckeln. Blockstorleken är 2kByte. a (8 p) Följande fråga ställs: π C (σ A = 4711 (R)). Uppskatta antalet blockläsningar, i värsta och bästa fall, då vi i inte har något index ii har ett sammansatt B + -trädindex på AB. b (2 p) Lönar det sig att ha separata index på B och A i stället för ett sammansatt index? Vilken typ av index skall man i så fall ha på A resp B? c (5 p) Antag att vi vill evaluera följande fråga så snabbt som möjligt. π C (σ B > 1000 (R)). Hur skall detta göras? Vilka ev index bör definieras? Attribut och indextyp skall anges. 4. 5 p Beskriv hur databasen återställs efter krasch utgående från nedanstående systemlogg. Part of system log: Start-transaction T1 Write-item T1, A, 10, 20 Start-transaction T2 Commit T1 Write-item T2, B, 10, 30 Checkpoint Write-item T2, C, 10, 50 Start-transaction T3 Write-item T3, D, 20, 70 Commit T2 Write-item T3, C, 50, 30 system crash

Tentamen i Databasteknik 5. 10 p Givet nedanstående transaktioner: TRANSAKTION 1 read (A); read (B); A := A + 2000; B := B - 2000; write (A); write (B); commit; TRANSAKTION 2 read (B); B := B + 1000; write (B); commit; a. (4 p) Om vi har följande operationsföljd: start T1, read T1 (A), start T2, read T1 (B), read T2 (B), write T1 (A), write T2 (B), write T1 (B) Är operationsföljden serialiserbar? b. (3 p) Lägg till read-lock-, write-lock- och unlock-operationer i transaktionerna då man har tvåfaslåsnings med wait-die för deadlock hantering. c. (3 p) Visa vad som händer om man i stället för låsning använder tidsstämpling. 6. 10 p Följande fråga, formulerad i relationsalgebra, ställs mot varuhusdatabasen som växt. tmp π företag, våning (σ typ = tomat Vara.varunr = Lager.varunr Lager.avd = Avdelning.avd ( Vara Avdelning Lager) π företag (σ Våning = 2 (tmp)) Relationernas storlek i antal tupler är: Anställd 10000 Försäljning 70000 Leverantör 1000 Lager 120000 Vara 50000 Avdelning 50 Lön, våning, volym och varunr är heltal och resten av attributen är textsträngar med längden 30. Visa hur frågeoptimeraren optimerar frågan genom algebraisk omformulering. Visa både vilka olika optimeringar som görs, vilka algoritmer som används och vad slutresultatet blir.

Lösningsförslag till tentamen i Databasteknik Tisdagen den 15 mars 2010

Lösningsförslag till tentamen i Databasteknik 1. Antag att artistnamnen, distributörsnamn, skivtitel, gruppnamn och skivbolagsnamn är unika. Ett faxnr går bara till en distributör eller ett skivbolag. En skiva kan ha olika pris beroende på land. Vi använder Land till två saker: 1) hålla reda på skivbolagets landstillhörighet, 2) distributörens landstillhörighet. a Grupp GÅr Dfax Distributör Sfax SkivBolag, SLand SkivBolag SLand SkivTitel SÅr, Sfax SkivTitel, DLand Dfax, Pris b Fördelar: Lätt att förstå hur allt hänger ihop. Nackdelar: Uppdateringsproblem, Faxnr till ett skivbolag finns på många ställen och ett okänt antal tupler måste uppdateras om ett skivbolag byter faxnr. Insättningsproblem: om ett nytt skivbolag, som inte ännu gett ut någon skiva, skall registreras måste en del av nyckeln vara null (det räcker inte med Sfax som nyckel). Borttagningsproblem: Om ett skivbolag bara givit ut en skiva som bara distribueras av en distrubutör och den aktuella skivan tas bort så försvinner även informationen om skivbolaget. c Nyckel till relationen: ANamn, Instrument, Grupp, Dfax, SkivTitel, Sfax, Låt Vi får då 1NF: ((ANamn, Instrument, Grupp, Dfax, SkivTitel, Låt), GÅr, SLand, Distributör, DLand, SÅr, SkivBolag, Sfax, Pris) 2NF: Grupp GÅr ((Grupp), GÅr) Dfax Distributör ((Dfax), Distributör) Sfax SkivBolag, SLand ((Sfax), SkivBolag, SLand) SkivTitel SÅr, Sfax ((SkivTitel), SÅr, Sfax) SkivTitel, DLand Dfax, Pris ((SkivTitel, DLand), Dfax, Pris) Kvar blir då: ((ANamn, Instrument, Grupp, Dfax, SkivTitel, Låt)) 3NF: SkivBolag SLand ((Sfax), SkivBolag, SLand) delas i ((Sfax), SkivBolag) och ((SkivBolag), SLand) och då vi inte har några andra transitiva beroenden får vi: ((Grupp), GÅr) ((Dfax), Distributör) ((SkivTitel), SÅr, Sfax) ((SkivTitel, DLand), Dfax, Pris) ((Sfax), SkivBolag) ((SkivBolag), SLand) ((ANamn, Instrument, Grupp, Dfax, SkivTitel, Låt)) Detta kontrolleras genom reverse-engineering och vi konstaterar att:

Lösningsförslag till tentamen i Databasteknik ((Grupp), GÅr) ((Dfax), Distributör) ((SkivTitel), SÅr, Sfax) ((SkivTitel, DLand), Dfax, Pris) ((Sfax), SkivBolag) ((SkivBolag), SLand) ((Låt, SkivTitel)) ((Dfax, SkivTitel)) ((ANamn, Instrument)) ((ANamn, SkivTitel, Låt)) Blir bättre. 2. a b c i Översätt följande uttryck i relationsalgebra till SQL: create view tmp as select företag, varunr, våning from Lager natural join Vara natural join Avdelning; create view tmp1(f, t) as select företag, typ from Vara natural join tmp where våning = 2; create view tmp2 as select f, count(t) as n from tmp1 group by f; select f from tmp2 natural join (select max(n) as n from tmp2) as t; tmp1 π typ (σ varunr = 13 Vara) tmp(företag, n) företag G count(avd) (Lager Vara tmp1) π företag (tmp G max(n) (tmp)) create view tmp as select avd, sum(volym) as n from försäljning group by avd; select våning from avdelning natural join (select avd from tmp natural join (select max(n) as n from tmp)) ii create view tmp as select avd, avg(lön) as mlön from anställd group by avd; select namn from anställd natural join (select avd from tmp natural join (select max(mlön) as mlön from tmp)) 3. a i Varje tupel är 4 + 4 +150 = 158 byte. Vi får då plats med 2048/158 = 12 tupler per block. Eftersom vi söker tupler för ett visst A-värde och kan ha 10000 olika B-värden så I värsta fall måste vi läsa igenom hela relationen: 1000000/12 = 83334 block i bästa fall ligger alla intressanta tupler i början av relationen och vi har A=4711 i kombination med 10000 olika B-värden. Vi kan då bruta evalueringen då vi läst 10000 tupler. Vi behöver då läsa 10000/12 = 834 block

Lösningsförslag till tentamen i Databasteknik ii Vi kan matcha på A-värdet och eftersom relationen är sorterad efter nyckeln så ligger alla 10000 B-värden efter varandra (relationen är sorterad i första hand på A i andra hand på B) så vi måste läsa 834 block från datafilen + B + -trädet. B-trädet: nyckeln tar upp 8byte och vi har en pekare på 4 byte. Varje post i B-trädet tar 12 byte. Vi får plats med (2048-4)/12 = 170 indexposter i varje block. På första nivån i trädet har vi 170 nycklar. På andra nivån i trädet har vi 171*170=28900 nycklar. På tredja nivån i trädet har vi (28900+171)*170=4942070 nycklar. Det räcker m a o med tre nivåer i indexfilen. I bästa och värsta fall behöver vi läsa 3+834 block. b c Nej vid den aktuella sökningen matchar vi på A (första delen i index) och behöver då läsa 3 block i indexfilen. Om vi har ett separat index på A blir trädet bara 2 högt och vi tjänar ett block men det är försumbart. Vi behöver ett index på B + och hashindex duger inte eftersom vi har en intervallfråga. Vi skall ha ett B-trädsindex på B. 4. Läs loggen bakifrån och gör två listor: Redo och Undo. I redo-listan noterar vi alla transaktioner som gjort commit. Då vi kommer till checkpoin-posten lägger vi alla transaktioner, som inte finns i redolistan, i undo-listan. Redo: T2 Undo: T3 Checkpoin tvingar ut alla databasbuffertar så redo behöver bara göras från checkpoin och frammåt: Kolla C-värdet om det är 10 så skriv 50 till databasen sedan är T2 klar. Gå till loggens slut och gör undo på T3: Om C är 30 så skriv 50 till databasen. Om D är 70 så skriv 20 till databasen. Fortsätt att backa i loggen tills start för T3 hittas då är vi klara. 5. a. read T1 (A), read T1 (B), read T2 (B), write T1 (A), write T2 (B), write T1 (B) Vi har konflikt m a p operationerna: read T1 (B), write T2 (B) read T2 (B), write T1 (B) write T2 (B), write T1 (B) Vi ritar en serialiserbarhetsgraf och ser då att vi får en cykel så operationsföljden är inte serialiserbar. b. Antag att T1 startar vid tiden 10 och T2 vid tiden 20. T1(10) D-lås, ok read(a) D-lås, ok read(b) X-lås, ok write(a) X-lås, ok write(b) Commit T2(20) read(b) D-lås, ok write(b) X-lås, konflikt, släpp lås, omstart Nu kan transaktion 2 köra klart.

Lösningsförslag till tentamen i Databasteknik c. T1 läser A: TS T1 =10 och TS R (A) = 0 ok T1 läser B: TS T1 =10 och TS R (B) = 0 ok T2 läser B: TS T2 =20 och TS R (B) = 10 ok T1 skriver A: TS T1 =10 och TS R (A) = 10 ok, TS W (A) = 0 ok T2 skiver B: TS T2 =20 och TS R (B) = 20 ok, TS W (B) = 0 ok T1 skiver B: TS T1 =10 och TS R (B) = 20 konflikt, rollback och omstart med tiden = 30 TS R (A) TS W (A) TS R (B) TS W (B) 0 0 0 0 10 10 20 10 20 Nu är T2 klar så T1 kan köra klart. 6. Det initiala evalueringsträdet ser ut så: π företag σ våning = 2 σ typ = tomat Vara.varunr = Lager.varunr Lager.avd = Avdelning.avd Lager Vara Avdelning Splittra selektioner och för ner dem så långt som möjligt i trädet. Projicera ut det som behövs för vidare operationer. Vi får följande: π företag σ Vara.varunr = Lager.varunr σ Lager.avd = Avdelning.avd Lager π varunr π avd σ typ = tomat σ våning = 2 Vara Avdelning Ordna om lövnoderna så att naturlig join kan användas

Lösningsförslag till tentamen i Databasteknik π företag π varunr Lager π avd σ typ = tomat σ våning = 2 Vara Avdelning Nu ordnar vi om lövnoderna så att minsta datamängden ligger till vänster. Vi får då ordningen (vänster till höger): Vara, Avdelning, Lager Eftersom datamängden från Vara blir liten kan den ligga kvar i PM och en blocknästlad join blir snabb. Samma för Avdelning.