Side 1 av 7 Norges teknisk-naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap LØSNINGSFORSLAG TIL KONTINUASJONSEKSAMEN I FAG TDT4145 DATAMODELLERING OG DATABASESYSTEMER Faglig kontakt under eksamen: Svein Erik Bratsberg Tlf.: 995996 (Bratsberg) Eksamensdato: 6. august 01 Eksamenstid: 09.00-1.00 Tillatte hjelpemiddel: D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt. Språkform: Bokmål
Side av 7 Oppgave 1 Datamodellering 0 % Oppgave ER, relasjonsalgebra og SQL 0 % a) En løsning på oppgaven (blant flere mulige):
Side av 7 b) Relasjonsalgbra i grafnotasjon(en løsning uten sortering godtas uten trekk): c) Relasjonsalgebra i grafnotasjon: d) Spørring i SQL (løsninger med join-predikatet i from-delen er likeverdige): select Plassering, s.sid, Navn, Nasjonalitet, SluttTid from SkøyteLøper AS s, Resultat AS r where s.sid = r.sid and LID = 100 order by Plassering ASC, Navn ASC e) Spørring i SQL (løsninger med join-predikatene i from-delen er likeverdige): select Nasjonalitet, count(r.sid) from Resultat AS r, SkøyteLøper AS s where r.sid = s.sid and LID = 100 group by Nasjonalitet order by count(r.sid) DESC
Side 4 av 7 Oppgave Teori 0 % a) Et tuppel (a x, b 1, c 1, d, e x ) der d d 1 og a x og e x er vilkårlige verdier, vil gjøre at BC D ikke kan gjelde for tabellen. b) To mengder funksjonelle avhengigheter F og G er ekvivalente hvis de uttrykker den samme restriksjonen. Det kan uttrykkes som F + = G +. For å sjekke om to spesifiserte mengder er ekvivalente, er det lite hensiktsmessig (les: mye arbeid) å beregne tillukningene. Det er enklere å sjekke om FD-ene i den ene mengden kan utledes fra FD-ene i den andre mengden og vise versa. F utleder G: a b og b c gir a c. a b og a c gir a bc. c a er med i begge mengdene. F utleder med andre ord G (G + er en delmengde av F + ). G utleder F: a bc gir a b. c a er med i begge mengdene. b c kan ikke utledes fra FD-ene i G (F + er ikke en delmengde av G + ). F og G er ikke ekvivalente mengder med funksjonelle avhengigheter. c) En kandidatnøkkel er en unik identifikator (supernøkkel aldri to tupler/rader med samme verdi for alle attributtene i identifikatoren) som er minimal. At identifikatoren er minimal betyr at det ikke finnes noen ekte delmengde av attributtene i identifikatoren som også er en unik identifikator. Kandidatnøkler i R: AD, BD og CD. d) Tredje normalform (NF) godtar alle funksjonelle avhengigheter der de attributtene som bestemmes (høyresideattributtene) er nøkkelattributter (med i minst en kandidatnøkkel). I R er alle attributtene nøkkelattributter. Tabellen vil derfor være på NF uansett hvilke funksjonelle avhengigheter som gjelder. Boyce-Codd nomalform (BCNF) krever at alle mengder av attributter som bestemmer noe (venstrsidene i de funksjonelle avhengighetene), må være supernøkler for tabellen. I dette tilfellet er verken A, B eller C supernøkler for tabellen. Tabellen oppfyller derfor ikke kravene til BCNF. Oppgave 4 Hashing 15 % a) Extendible hashing er en hashingmetode for dynamiske data, dvs. hvor datamengden kan endre seg mye over tid og kan være uforutsigbar. Den store fordelen med denne metoden er at ytelsen ikke blir degradert i forhold til å ha lange overløp som i statisk hashing når datamengden vokser. En annen fordel er at man kun splitter ei og ei blokk av gangen når ei blokk går full. Ulempen er at man må ha en katalogstruktur som må være minnebasert for å være effektiv. Evt. blir det to blokkog diskaksesser for hver dataaksess. b) Fordelen med lineær hashing er at det er en dynamisk hashingmetode som ikke gjør bruk av katalog, dvs. man har stor sjanse for at man greier seg med en blokkaksess. Ulempen er at man må bruk en overflytsmetode som i statisk hashing da det ikke splittes der hvor behovet nødvendigvis er, men etter et lineært mønster. Vi mod er alle verdier på 8: 11 1 001 04 4 100 71 011 547 011
Side 5 av 7 800 0 000 1 5 101 9 4 100 145 1 001 11 0 000 71 1 001 41 4 100 Her viser vi løsningen hvor vi har brukt de minst signifikante bitene av hashverdien (som forelest): 000 800 11 001 010 011 100 11 145 71 101 110 111 71 547 04 9 41 1
Side 6 av 7 Her har vi vist løsningen når vi bruker de mest signifikante bitene av hashverdien (som i 000 800 11 001 010 71 547 011 100 101 110 111 04 9 41 11 145 71 læreboka): 1 Oppgave 5 Transaksjonsteori 10 % a) w1(a);r1(b);w(b);c1;w(a);c; En strict historie tillater ikke en transaksjon å lese eller skrive en ikke-committet (eller ikkeabortert) verdi. b) w1(a);w1(b);w(a);c1;r(b);c; En historie er ACA hvis hver transaksjon i historien bare leser verdier skrevet av committede transaksjoner. c) w(a);w1(b);w1(a);r(b);c1;c; En historie er gjenopprettbar når transaksjoner committer etter transaksjoner de har lest fra committer. d) w(a);w1(b);w1(a);r(b);c;a1; Her leser T B som T1 har skrevet, så commiter T og senere borterer T1. Oppgave 6 Låsing 10 % a) a. Basic PL; Setter og slipper låser når man trenger dem, men må sette alle låser før man slipper noen. Frigjør data tidlig.
Side 7 av 7 b. Conservative PL: Må erklære hvilke data man låser på forhånd. Tillater ikke så mye samtidighet. Men er vranglåsfri. c. Strict PL: Som basic PL, men slipper skrivelåsene helt til slutt. Denne impliserer stricte historier som er basisen for undo-logging. d. Rigorous PL. Som Strict PL, men slipper alle låser til slutt. Enkel å implementere, men tillater mindre samtidighet enn strict PL. b) Vranglås kan oppstå for alle variantene, bortsett fra konservativ PL. Dette kan skje ved at to transaksjoner prøver å låse de samme dataene, men gjør det i forskjellig rekkefølge, slik at de blir å vente på hverandres låser i en sykel. Oppgave 7 Logging og recovery 5 % ARIES lager periodisk sjekkpunktloggposter som brukes til å forkorte tida det tar å gjøre recovery. I en sjekkpunktloggpost (dvs. sluttposten) er et bilde av transaksjonstabellen og «dirty page table» lagret. Transaksjonstabellen brukes til å vite hvilke transaksjoner som er i live ved starten av sjekkpunktet i loggen, slik at man slipper å scanne hele loggen. Dirty Page Table brukes til å finne et sikkert og godt punkt for å starte REDO-recovery, slik at man slipper å starte dette veldig langt tilbake i loggen. ARIES er spesiell her da skriving at skitne blokker er frakoblet sjekkpunktingprosessen.