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

Relevanta dokument
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.

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.

Uppgift 1. Transaktioner: Följande fyra krav ställs pνa ett databassystems transaktionshantering: A. Atomicity" "Allt eller inget": Varje transaktion

Analytisk relationsdatabasdesign

Övningar i SQL. SQLAccess.doc Ove Lundgren

Konceptuella datamodeller

Databaser och Datamodellering Foreläsning IV

Transformkodning Idé: 1. Tag datasekvensen och dela in den i block av storlek N (eller N N om signalen är tvνadimensionell). Transformera dessa block

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

Lösningsförslag till Exempel tentamen

Lösningar till tentamen i EDAF75

Databaser Design och programmering

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

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

NORMALISERING. Mahmud Al Hakim

Tentamen i Databasteknik

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

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

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Tentamen i Databasteknik

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

Design och underhåll av databaser

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

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

Exempel-Tentamen III

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

Lösningsförslag, tentamen i Databaser

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

Tentamen i Databasteknik

Universitetet: ER-diagram

Uppgift 1. (a) Till vad anvands NULL-varden? Nar ett akta varde: { inte nns (inte ar tillampbart), { ar okant, { ar annu inte bestamt. { 1p. (b) Vilka

Tentamen. Databasmetodik Lördag 27 september 2014 kl

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

Karlstads Universitet, Datavetenskap 1

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

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

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

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

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

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

Innehνall 1 Introduktion Processbeskrivning Inloggning och uppstart

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

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

Tentamen. TDDB38 - Databasteknik

Statisk olinjäritet. Linjärt dynamiskt system

Tentamen DATABASTEKNIK - 1DL116

Tentamen plus lösningsförslag

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

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

Webbprogrammering, grundkurs 725G54

Tentamen 4,5 hp Delkurs: Databaser och databasdesign 7,5hp Tentander: VIP2, MMD2, INF 31-60, ASP

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

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Föreläsning 6 Databaser och säkerhet

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

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

Sample exam questions. Database exam TIG058

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

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

Tentamen 2I1033, IT i Organisationer och Databasteknik lördag 17/4 2004, kl LÖSNINGSFÖRSLAG

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

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

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.

ffl Utdrag ur kap 2 ur R. O. Duda and P. E. Hart, Pattern Classification", ffl Utdrag ur kap 8 ur R. A. Johnson and D. W. Wichern, Applied Multi

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

Databasutveckling Introduktion till SQL och TSQL

Karlstads Universitet, Datavetenskap 1

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

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

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Inst. för Data- och Systemvetenskap SU Maria Bergholtz. Tentamen. 21/ kl Inga hjälpmedel är tillåtna (annat än ordbok).

Structured query language (SQL)

Enligt Hunds första regel är spin maximal. Med tvνa elektroner i fem orbitaler tillνater

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

Grunderna i SQL del 1

Tentamen DATABASTEKNIK - 1DL116, 1MB025

Kvalitetstänkande. Utgångsläge Samtliga ER-diagram har överförts till scheman

TDDI 60 Tekniska databaser

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

Databaser design och programmering Säkerhetsproblem Databashanteraren SQL-injektion

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

Structured Query Language (SQL)

Transaktioner. 1. Transaktioner 2. Samtidighet ( concurrency ) och lås. 3. Deadlock. Kap. 17. Informatik B: Databashantering med SQL Server

Karlstads Universitet, Datavetenskap 1

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

Relationell databasdesign

Tentamen för DD1370 Databasteknik och informationssystem

Starta MySQL Query Browser

WCMS-15, Webbutvecklare CMS

Detektion av SNP i DNA-sekvenser

Föreläsning 6: Normalisering & funktionella beroenden

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

Kapitel 4 Arkivmenyn Innehåll

Föreläsning 3 Transformation från konceptuell datamodell till relationsschema ( Syntetisk databasdesign ) Vad är ett databashanteringssystem?

Databaser. Vad du ska lära dig: Ordlista

Transkript:

Institutionen för datavetenskap CTH- TIN 140 Göteborg GU- INN 12 mw DATABASER D4 och GU HT -99 Extra tentamen i DATABASER Obs! Lärare-version, med lösningar DAG: fr, 21 jan 2000 TID: kl. 14 18 SAL: grupprum 7, Matematiskt Centrum Ansvarig: Martin Weichert Förfrνagningar: Martin Weichert, tel. 772 10 68 Hjälpmedel: utdraget ur Oracle7 Server SQL Language ( det gula pappret") resp. Appendix B Syntax ur referensmanualen för Oracle SQL samt SQL*Plus Quick Reference. Lycka till! 1

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 dessa. ffl Redundans, motsägande data pνa olika ställen! Normaliseringar ffl Nonsens-data, t ex 31 juni"! typvillkor, undertypvillkor, inklusionsvillkor ffl Tomma referenser! referensvillkor ffl Ofullständiga ändringar! transaktionskonceptet ffl Datorkrasch! loggfil, νaterställningsmetoder (fördröjd/omedelbar ändring) ffl Parallellism, flera användare samtidigt! lνasning (2-fas-, konservativ, strikt,...), serialiserbarhet ffl Obehörigt tillträde! säkerhetsmekanismer ( discretionary", mandatory") 5p. (c) Vad är skillnaden mellan SQL-satserna drop table ANSTÄLLDA och delete from ANSTÄLLDA? 9poäng. delete tömmer (rensar) tabellen ANSTÄLLDA, d v s tar bort hela innehνallet ur tabellen, men lämnar kvar tabellstrukturen (namn och typer pνa fält, nyckel-, referens- och andra villkor). Med drop tas bort även allt information om tabellstrukturen. 1p. Uppgift 2.9p Lνat r(a; B; C) och s(b; C; D) vara tabeller, a ett element av A:s domän (datatyp), b av B:s domän osv. Attribut med samma namn har alltsνa samma domän, attribut med olika namn har olika domän. Vilka av de följande är giltiga relationsalgebra-uttryck? (a) r [ s (b) ß B (r) ß B (s) (c) ff B=b 1 (r) (d) ff A=a 1^B=b 1 (s) (e) r 1 s (naturlig samkörning) (f) ß A (r) ß D (s) För de uttryck som är ogiltiga, motivera varför! För de giltiga uttrycken, beräkna resultatet, med tabellerna r och s givna som nedan. (Beakta att resultatet är mängder!) r: A B C a0 b0 c0 a0 b1 c1 a0 b2 c1 a1 b1 c0 s: B C D b1 c1 d0 b2 c1 d1 b2 c0 d0 (a) r [ s: ogiltigt (icke mängd-kompatibla namn och domäner av attributen stämmer inte överens) 1p. (b) (c) ß B (r) ß B (s): B b0 ff B=b 1 (r): A B C a0 b1 c1 a1 b1 c0 1p. 2

(d) ff A=a 1^B=b 1 (s): ogiltigt (s har inget A) 1p. (e) (f) r 1 s: A B C D a0 b1 c1 d0 a0 b2 c1 d1 ß A (r) ß D (s): Poängavdrag ( 1p.) om det finns dubletter. A a0 a0 a1 a1 D d0 d1 d0 d1 9poäng. 3

Uppgift 3.12p En skivaffär vill hνalla reda pνa sina skivor och använder en databas med följande tabeller: ffl skiva(nr, Titel, Typ, Kategori, Land, Pris) En lista över alla skivor, med ett nummer Nr som unikt identifierar varje skiva, Titel, Typ ('LP', 'CD' eller dyl.), Kategori ('klassisk', 'folkmusik' eller dyl.), Land (landet där skivan producerades) och Pris. ffl artist(namn, Född, Land) En lista över alla artister som medverkade i skivorna, med Namn (antas vara unikt), födelsedatum Född och Land där artisten föddes. ffl medverkar(nr, Artist) Lista över alla artister som medverkar i nνagon skiva. Nr är referens till skiva, Artist är referens till artist. ffl sνalda(nr, νar, Mνanad, Antal) En lista över hur mνanga exemplar av varje skiva som sνaldes i Mνanad i νar. Nr är referens till skiva. Skriv SQL-satser för följande uppgifter: (a) Lista nummer och titel pνa alla skivor där John Lennon medverkar. eller from SKIVA where NR in (select NR from MEDVERKAR from SKIVA S, MEDVERKAR M where ARTIST = 'John Lennon'); where S.NR = M.NR and ARTIST = 'John Lennon'; Obs villkoret S.NR = M.NR fνar inte glömmas! (b) Lista nummer och titel pνa alla skivor där bara John Lennon medverkar. from SKIVA where NR in (select NR and NR not in (select NR eller from SKIVA S where (select ARTIST from MEDVERKAR where ARTIST = 'John Lennon') from MEDVERKAR where ARTIST <> 'John Lennon'); from MEDVERKAR M where M.NR = S.NR) = ('John Lennon'); 4

och mνanga variationer. (c) Ange alla kombinationer (utan dubletter) av artister och skivtitlar där artisten medverkar i en skiva som producerades i ett annat land än det där artisten föddes. select distinct A.NAMN, S.TITEL from SKIVA S, MEDVERKAR M, ARTIST A where M.NR = S.NR and M.ARTIST = A.NAMN and A.LAND <> S.LAND; Obs inga samkörningsvillkor fνar glömmas! (d) Ange sammanlagt antal klassiska skivor sνalda i september 1996 samt den sammanlagda summan pengar som betalades för dessa. select SUM(ANTAL), SUM(ANTAL*PRIS) from SKIVA SK, SνALDA S where SK.NR = S.NR and SK.KATEGORI = 'klassisk' and S.νAR = 1996 and S.MνANAD = 'september'; (e) Ange den kategori (eller de kategorier) som har högsta genomsnittliga pris. För denna uppgift behöver vi en vy som mellanresultat. create view KAT_PRIS(KAT,MEDELPRIS) as select KATEGORI, avg(pris) from SKIVA group by KATEGORI; select KAT from KAT_PRIS where MEDELPRIS = (select max(medelpris) from KAT_PRIS); (f) Sänk priset pνa alla hνardrockskivor med 10%. update SKIVA set PRIS = 0.9 * PRIS where KATEGORI = 'hνardrock'; 12 poäng. Uppgift 5.9p Betrakta relationen sjukvνard(patient, Sjukhus, Läkare, Kommun) med funktionella beroenden 1. Läkare! Sjukhus 2. Patient, Sjukhus! Läkare 3. Sjukhus! Kommun 5

Beroendena skall alltsνa uttrycka att: 1. Varje Läkare arbetar pνa ett visst Sjukhus. 2. Varje Patient som kommer till ett Sjukhus blir alltid behandlad av samma Läkare där. 3. Varje Sjukhus finns i en viss Kommun. En Patient kan alltsνa behandlas pνa olika Sjukhus (givetvis av olika Läkare). (a) Bestäm alla nycklar till relationen sjukvνard. fp; Sg och fp; Lg. 2p. (b) Uppfyller sjukvνard Boyce-Codd-normalformen? Motivera! Nej. Beroendet 1. L! S bryter mot BCNF, eftersom L inte är nνagon (över)nyckel; och beroendet 3. S! K bryter mot BCNF, eftersom S inte är nνagon (över)nyckel. 1p. (c) Uppfyller sjukvνard tredje normalformen? Motivera! Nej. Beroendet 1. L! S uppfyller 3NF, eftersom S är ett nyckelattribut (ingνar i nyckeln PS), men beroendet 3. S! K bryter även mot 3NF, eftersom K inte är nνat nyckelattribut. (Beroendet 2. PS! L uppfyller 3NF eftersom det redan uppfyller det starkare BCNF.) 1p. (d) Om vi delar upp relationen sjukvνard för att uppfylla en bättre (d.v.s. strängare) normalform, vilka delrelationer fνar vi? Vad förlorar vi? Vilka felaktiga data är möjliga att mata in i tabellen? Först: Vi delar upp med beroendet 3. S! K för att fνa νatminstone 3NF, och vi fνar relationer psl(p ;S;L) och sk(s;k) med referens psl:s! sk:s. Vi förlorar inget. Sedan: Vi delar upp psl med beroendet 1. L! S för att fνa BCNF, och vi fνar relationer ls(l;s och pl(p; L). Vi förlorar beroendet 2. PS! L. Felaktiga data kan matas in som bryter mot beroendet 2., d.v.s. samma patient som har tvνa olika läkare vid samma sjukhus. 4p. (e) Om vi inte delar upp relationen sjukvνard, vilka felaktiga data är dνa möjliga att mata in i tabellen? Felaktiga data kan matas in som bryter mot beroendet 1. L! S, d.v.s. samma läkare tilldelas olika sjukhus; eller som bryter mot beroendet 3. S! K, d.v.s. samma sjukhus tilldelas olika kommuner. (f) Vilka andra problem kan uppstνa med relationen sjukvνard om vi inte delar upp? ffl Borttagningsanomalier: Om sista patient eller läkare till ett sjukhus borttages, sνa försvinner informationen om vilken kommun det tillhör. (Inte heller kan sνadan information lagras om ett nytt sjukhus som ännu inte fνatt patienter/läkare.) ffl Uppdateringsanomalier: Ändras kommunen till ett sjukhus, sνa ändras den inte automatiskt pνa alla ställen! bryter mot 3. S! K. 1p. 11 poäng. Uppgift 6.8p Ett databassystem har kraschat. Vid nystart av systemet mνaste innehνallet i databasenνaterställas till ett konsistent tillstνand. För detta används loggfilen, vilken har följande innehνall: 6

BEGIN_TRANSACTION(T2) WRITE(T2,A,80,50) BEGIN_TRANSACTION(T3) COMMIT_TRANSACTION(T2) CHECKPOINT WRITE(T3,B,40,30) BEGIN_TRANSACTION(T1) WRITE(T1,A,50,100) WRITE(T3,A,100,110) WRITE(T3,B,30,75) WRITE(T1,A,110,150) COMMIT_TRANSACTION(T1) WRITE(T3,A,150,120) där WRITE(T2,A,80,50) betyder att transaktionen T2 har ändrat värdet pνa dataobjektet A frνan 80 till 50. Beskriv vad som händer vid νaterställningen efter kraschen (a) om fördröjd ändring (deferred update) används, (b) om omedelbar ändring (immediate update) används. Hur ser det νaterställda databastillstνandet ut? Vad händer sen? Alla ändringar som gjordes innan CHECKPOINT, alltsνa WRITE(T2,A,80,50), är inskrivna i databasen. T1 hann avsluta, COMMIT TRANSACTION, innan kraschen, alltsνa mνaste T1:s ändringar, WRITE(T1,A,50,100), WRITE(T1,A,110,150), gälla. T3 hann inte avsluta, alltνa fνar T3:s ändringar, WRITE(T3,B,40,30), WRITE(T3,A,100,110), WRITE(T3,B,30,75), WRITE(T3,A,150,120) inte lämna nνagra spνar i databasen. (a) Vid fördröjd ändring har T1:s och T3:s ändringar inte skrivits in i databasen ännu. T1:s ändring mνaste göras om, REDO WRITE(T1,A,50,100), REDO WRITE(T1,A,110,150), men T3:s kan vi strunta i. (b) Vid omedelbar ändring har T1:s och T3:s ändringar redan skrivits in i databasen. Först kollar man loggfilen baklänges för alla ändringar som gjorts av misslyckade (avbrutna) transaktioner och gör dem ogjorda: UNDO WRITE(T3,A,150,120), UNDO WRITE(T3,B,30,75), UNDO WRITE(T3,A,100,110), UNDO WRITE(T3,B,40,30). Pνa sνa sätt νaterstνalls B till dess ursprungliga värde 40 och A till 100. Sen kollar man loggfilen framlänges för de lyckade transaktionernas alla ändringar och gör om dem: REDO WRITE(T1,A,50,100), REDO WRITE(T1,A,110,150). Ibνada tvνa fall ska resultatet alltsνa seutsνa: A = 150, B = 40. Sen fνar det inte glömmas att den avbrutna transaktionen T3 ska startas pνa nytt. 8poäng. 7