Tentamen i Databasteknik



Relevanta dokument
Tentamen i Databasteknik

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

Tentamen i Databasteknik

Tentamen i. Databasteknik

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

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

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

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

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Tentamen i Databasteknik

Tentamen för DD1370 Databasteknik och informationssystem

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 för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem

Exempel-Tentamen III

Tentamen för DD1370 Databasteknik och informationssystem

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

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

Tentamen för DD1370 Databasteknik och informationssystem

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

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

Tentamen. TDDB38 - Databasteknik

Lösningsförslag till Exempel tentamen

Tentamen plus lösningsförslag

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

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

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

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

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

Lösningsförslag Tentamen, 25 april 03

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

Övningar i SQL. SQLAccess.doc Ove Lundgren

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

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

Tentamen för DD1370 Databasteknik och informationssystem

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

Lösningar till tentamen i EDAF75

Karlstads Universitet, Datavetenskap 1

TENTAMEN TDDD12 Databasteknik 7 januari 2010, 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.

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

Tentamen ISGB01, ISGB24. Databasdesign 7,5 Poäng

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

TDDI60 Tekniska databaser

Tentamen DATABASTEKNIK - 1DL116, 1MB025

Frågeoptimering. Frågeoptimering kapitel 14

Lösningsförslag till Tentamen,

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

Lösningsförslag, tentamen i Databaser

Laboration SQL. Kom igång.

Analytisk relationsdatabasdesign

Databasteknik. Vad är. Vad är databaser bra till? data? föreläsare: Kjell Lindqvist. och NADA. databaser? och. vad är de bra för?

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

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

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

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

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

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

Datastrukturer. föreläsning 10. Maps 1

Tentamen, Distribuerade System/Programvaruarkitektur

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

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

Tentamen Datastrukturer D DAT 036/INN960

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

Komplement till databasdelen på 1E1601. Kursmaterial

Funktionella beroenden - teori

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

Exempel tentamen. Skriv bara på en sida av pappret Skriv namn på varje papper Skriv läsligt, annars rättas inte tentamen Alla hjälpmedel är tillåtna

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

Tentamenskod: Tentamensdatum: Tid: 14:00-19:00. Inga hjälpmedel är tillåtna

Tentamen. Databasmetodik Lördag 27 september 2014 kl

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

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

Design och underhåll av databaser

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

Tentamen Datastrukturer D DAT 036/INN960

Universitetet: ER-diagram

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

TENTAMEN. Luleå tekniska universitet

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

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.

Databaser - Design och programmering

Mitthögskolan ITM Telefon Access. Laborationskompendium för grunderna i databasen Microsoft Access. Detta exemplar tillhör:

Tentamen Databasteknik

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

Datalager och datautvinning

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

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

Databaser och. SQL, utsökningar mot flera tabeller TENTA. # radnr (#) studnr (#) kursnr * tentadatum * betyg

Programmering II (ID1019) :00-11:00

Transkript:

Tentamen i Onsdagen den 7 mars 2007 Tillåtna hjälpmedel: Allt skrivet material 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 75% av den totala examinationen + bonus max 25% Betygsgränser : KTH SU 3 50% G 50% 4 63% VG 69% 5 75% Lycka till! Kjell 1. (20%) Ett företag som säljer nya bilar har ett register över sålda bilar, bilarnas extrautrustning, extrautrustningens pris (per del i extrautrustningen) och eventuell rabatt på olika delar i extrautrustningen som dessutom kan vara olika för olika bilar.

Tentamen i Kjell Lindqvist, (08) 790 62 76 Registret ser ut på följande sätt: Bilnr FörsDatum ExtraUtr Pris för ExtraUtr RabattPåExtraUtr ABC123 070115 FartHållare 3500 25% ABC123 070115 Radio 2000 15% ABC123 070115 AC 4000 30% BAC321 070115 Radio 2000 20% a (4%) b (3%) c (13%) 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% 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 string(30). a (4%) Översätt följande uttryck i relationsalgebra till SQL: tmp(a, n) avd G count(*) ((σ våning = 2 våning = 3 (Avdelning)) (σ företag = adidas (Lager))) π A (tmp G max (n) as n (tmp)) b (5%) Översätt följande SQL-fråga till ett tupelkalkyluttryck: select An.chef from Anställd An, Avdelning Av where An.avd = Av.avd and Av.våning = 1 and exists (select * from Anställd Bn, Avdelning Bv where Bn.avd = Bv.avd and An.chef = Bn.chef and Av.våning <> Bv.våning); c (6%) Skriv SQL-frågor mot varuhusdatabasen som besvarar följande frågor: i På vilka våningar är man ensamma om att sälja en typ av vara? ii På vilken våning finns det flest anställda? Sid 2

Tentamen i Kjell Lindqvist, (08) 790 62 76 3. 15% a (3%) Givet följande B + -träd där alla noder utom roten kan innehålla 1-2 nycklar. Visa vad som händer då nyckeln 44 tas bort. b (3%) För vilken blockstorlek är trädet (i a) designat? c (5%) Antag att vi vill konstruera index för relationerna R(A, B), S(B, C) där A, B och C är av typen integer och vi vill evaluera σ A <= 56 C =65 (R S) så snabbt som möjligt. Hur skall index(en) definieras och vilken är indexens respektive typ? d (4%) Under vilka omständigheter lönar det sig att inte indexera ett attribut? 4. 15% a (7%) Avgör om följande operationsföljder är serialiserbara. 1. r2(a); w1(a); w2(a); r1(a) 2. w1(a); w2(b); r1(a); r3(b); w3(a); r1(b) (r2 betyder att transaktion 2 läser) b (8%) Under kursen har vi diskuterat strategier för återhämtning efter krasch. I detta problem antar vi att, före det att en transaktion påbörjar sina operationer så vet man vilka block som kommer att användas. Vi kan vidare anta att transaktionerna körs en och en så vi inte behöver ta hänsyn till parallellitetsproblem. Det är även så att en transaktion involverar endast ett fåtal block så vi får plats med alla block, som kommer att användas, i primärminnet. Anta att vi designat följande enkla sätt att utföra transaktionerna utan loggning: Före det att transaktionen påbörjar sina operationer laddas de block som kommer att beröras in till primärminnet. Transaktionen utför därefter alla ändringar i primärminnet och slutligen skrivs blocken på respektive plats på sekundärminnet. Vilka problem kan vi få med ovanstående strategi? Vilka av egenskaperna (ACID) hos en transaktion är inte säkert uppfyllda om vi råkar ut för en systemkrasch? Sid 3

Tentamen i Kjell Lindqvist, (08) 790 62 76 5. 10% Visa hur frågan π A (tmp G max (n) as n (tmp)) där tmp definieras på följande sätt: tmp(a, n) avd G count(*) ((σ våning = 2 våning = 3 (Avdelning)) (σ företag = adidas (Lager))) optimeras och exekveras. För Lager gäller att varunr är av typen integer och avd och företag är av typen varchar(30), i Avdelning är våning av typen integer och avd av typen varchar(30). Avdelning har 30 tupler och lager 8000 tupler. Blockstorleken är 2Kbyte och de enda index som finns är B + -träd på primärnycklarna. Sid 4

Lösningsförslag till Tentamen i Onsdagen den 7 mars 2007 Tillåtna hjälpmedel: Allt skrivet material 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 75% av den totala examinationen + bonus max 25% Betygsgränser : KTH SU 3 50% G 50% 4 63% VG 69% 5 75%

Kjell Lindqvist, (08) 790 62 76 Lösningsförslag till Tentamen i 1. (20%) a Bilnr FörsDatum ExtraUtr PrisFörExtraUtr Bilnr, ExtraUtr RabattPåExtraUtr b Eftersom man bara lägger in ny information så får vi inte några uppdaterings- och borttagningsproblem. Insättningsproblem: Vi kan inte registrera ny extrautrustning och priset på denna. c Bilnr, ExtraUtr är den enda kandidatnyckeln så vi får 1NF: ((Bilnr, ExtraUtr) FörsDatum, PrisFörExtraUtr, RabattPåExtraUtr) Bryt ut icke-primattribut som inte är FFD av varje kandidatnyckel Icke-primattribut: FörsDatum, PrisFörExtraUtr, RabattPåExtraUtr Eftersom PrisFörExtraUtr bara beror av ExtraUtr så bryter vi ut PrisFörExtraUtr. ((ExtraUtr) PrisFörExtraUtr) FörsDatum beror bara av Bilnr ((Bilnr) FörsDatum) Och kvar blir ((Bilnr, ExtraUtr) RabattPåExtraUtr) Vi gör reverse engineering: ExtraUtr Detta verkar rimligt så den slutliga strukturen blir: ((Bilnr, ExtraUtr) RabattPåExtraUtr) ((ExtraUtr) PrisFörExtraUtr) ((Bilnr) FörsDatum) Bil d Om vi ofta vill titta på rabatter för extrautrustning för bilar som salts viss dag och vi har ett stort register så kan det löna sig att ha registret som i b. Sid 2

Kjell Lindqvist, (08) 790 62 76 Lösningsförslag till Tentamen i 2. a create view tmp(a, n) as select avd, count(*) from Avdelning, Lager where våning = 2 or våning = 3 and företag = adidas and Avdelning.avd = Lager.avd; select A from tmp where n = (select max(n) from tmp); b {t.chef t Anställd ( s)(s Avdelning t.avd = s.avd s.våning = 1 ( u)( v)(u Anställd v Avdelning u.avd = v.avd t.chef = u.chef s.våning v.våning)} c i create view tmp as select typ, våningn from Avdelning A, Försäljning F, Vara V where A.avd = F.avd and F.varunr = V.varunr; select T.typ from tmp T where not exists (select * from tmp where våning <> T.våning and typ = T.typ): ii create view tmp as select våning, count(*) as n from Anställd A, Avdelning B where A.avd = B.avd group by B.våning; select våning from tmp where n = (select max(n) from tmp); 3. a 37 b Max 2 nycklar och 3 pekare i varje nod. Ett heltal representeras med 4 byte och en pekare med 4 byte. Blockstorleken blir då 20 byte. c Hash eller B + -träd på C eftersom vi har en punktfråga och B + -träd på A då vi här har en intervallfråga. B kan indexeras med hash eller B + -träd eller inget index eftersom algoritmen för naturlig-join själv tillverkar ett index. d Då vi räknar med att en stor del av datamängden (>80%) selekteras eller om många operationer modifierar relationen. Sid 3

Kjell Lindqvist, (08) 790 62 76 Lösningsförslag till Tentamen i 4. a r2(a); w1(a); w2(a); r1(a) w1(a); w2(a) T1 T2 r2(a); w1(a) Ej serialiserbar. w1(a); w2(b); r1(a); r3(b); w3(a); r1(b) T1 T2 w1(a); r3(a) w2(b); r3(b) T3 Vi får ingen cykel så operationsföljden är serialiserbar. b Om en transaktion har genomfört alla sina operationer och påbörjat sin skrivfas då ett fel inträffar så kommer vissa block att ha skrivits och andra inte. Detta innebär att databasen lämnas i ett inkonsistent tillstånd. Om disken kraschar så kommer inte de transaktioner som utförts efter senaste backup att vara bevarade. De egenskaper (ACID) som inte säkert är uppfyllda är: A om endast en del av de buffrar som databasen har modifierat skrivs till SM före ett fel så betyder det att en del av transaktionens operationer genomförs men inte andra. C databasen kan hamna i ett inkonsistent tillstånd om inte alla buffrar har skrivits då ett fel inträffar. D om disken kraschar så går redan permanentade transaktioner förlorade. (I är inte så relevant här eftersom transaktionerna körs en och en) Sid 4

Kjell Lindqvist, (08) 790 62 76 Lösningsförslag till Tentamen i 5. Det initiala evalueringsträdet: π A avd as AG count(*) as n G max(n) as n avd as AG count(*) as n σ våning =2 våning = 3 σ företag= adidas Avdelning Lager σ våning =2 våning = 3 σ företag= adidas Avdelning Lager Omforma villkoret med eller enligt A B ( A B) det blir då (våning 2 våning 3) För ner selektioner så långt som möjligt. Klart! Projicera ut endast det som behövs. Från lager projiceras endast företag, avd och varunr. För max(n) använder vi pipelining från partitionering. För partitionering och aggregering använder vi hashing. Joinoperationerna görs med blocknästlad join. De två delträden under den sista joinoperationen bör byta plats eftersom det högra delträdet ger den minsta datamängden. De nedersta delträden kommer i rätt ordning. Sid 5

Kjell Lindqvist, (08) 790 62 76 Lösningsförslag till Tentamen i Evalueringsträdet blir då: π A G max(n) as n avd as AG count(*) as n avd as AG count(*) as n π avd π avd, varunr π avd π avd, varunr σ (våning 2 våning 3) σ företag= adidas σ (våning 2 våning 3) Avdelning σ företag= adidas π företag, avd, varunr Lager Avdelning π företag, avd, varunr Lager Sid 6