Institutt for datateknikk og informatikk Eksamensoppgåve i TDT4145 Datamodellering og databasesystemer Fagleg kontakt under eksamen: Roger Midtstraum: 995 72 420 Svein Erik Bratsberg: 995 39 963 Eksamensdato: 7. august 2017 Eksamenstid (frå-til): 09:00-13:00 Hjelpemiddelkode/Tillatne hjelpemiddel: D Ingen trykte eller handskrivne hjelpemiddel tillatne. Bestemt, enkel kalkulator tillate. Annan informasjon: Målform/språk: Norsk nynorsk Sidetal: 6 Sidetal vedlegg: 0 Informasjon om trykking av eksamensoppgave Originalen er: 1-sidig 2-sidig X sort/hvit X farger skal ha flervalgskjema Dato Kontrollert av: Sign Merk! Studenter finner sensur i Studentweb. Har du spørsmål om din sensur må du kontakte instituttet ditt. Eksamenskontoret vil ikke kunne svare på slike spørsmål.
Oppgåve 1 Datamodellar og relasjonsdatabasar (15 %) a) I figuren under har vi vist to ulike måtar å representere ein binær relasjon mellom entiteter i entitetsklassane A og B. Diskuter fordelar og ulemper ved dei to alternativa. b) I figuren under har vi vist ein ER-modell. Oversett denne til ein hensiktsmessig relasjonsdatabasemodell. Gjer kort greie for eventuelle føresetnader som du finn det nødvendig å gjere. Side 2 av 6
Oppgåve 2 Teori (10 %) a) Når vi designar relasjonsdatabaser kan vi velje om vi vil tillate redundans i datalagringa. Diskuter fordelar og ulemper ved å tillate redundans. b) I relasjonsdatabaser har vi ein spesiell NULL-verdi. Kva er hensikta med å ha ein slik spesiell verdi? Kunne vi klara oss utan? Oppgåve 3 Relasjonsdatabasar, ER-modellar, relasjonsalgebra og SQL (20 %) Gå ut frå følgjande relasjonsdatabase-skjema for ein database over verdsdelar, land og byar. Primærnøklar er understreka. Verdensdel(VID, VNavn) Land(LID, LNavn, Areal, Folketall, VDelID) VDelID er framandnøkkel mot Verdensdel-tabellen. Kan ikkje ha NULL-verdi. By(BID, BNavn, Folketall, LandID, HovedstadFraAAr) LandID er framandnøkkel mot Land-tabellen. Kan ikkje ha NULL-verdi. Om byen er hovudstad i landet, har den eit årstal som verdi for HovedstadFraAAr, som i andre høve har NULL-verdi. Relasjonsalgebra kan formulerast som tekst eller grafar. Om du kan begge notasjonane føretrekk vi at du svarar med grafar, men du blir ikkje trekt for å svare med tekst. a) Lag eit ER-diagram (du kan bruke alle verkemiddel som er med i pensum) som i størst mulig grad samsvarar med relasjonsskjemaet. Gjer kort greie for eventuelle føresetnader som du finn det nødvendig å gjere. b) Lag ei spørjing i relasjonsalgebra som finn namn på by, namn på land og byen sitt folketal for alle hovudstadar i Afrika. c) Lag ei spørjing i SQL som finn verdsdel-id, verdsdel-namn, kor mange land det er i verdsdelen, verdsdelen sitt areal og verdsdelen sitt folketal. d) Lag ei spørjing i SQL som finn by-namn, byen sitt folketall, land-namn og verdsdel-namn for alle byar som har fleire enn 5 millionar innbyggarar. Resultatet skal vere sortert etter folketal i minkande ordning, deretter på byen sitt namn i stigande rekkefølge. e) Lag eit SQL-skript som opprettar Land-tabellen. Vel hensiktsmessige datatypar for attributta (vi vektlegg ikkje detaljer). Gjer kort greie for eventuelle føresetnader som du finn det nødvendig å gjere. Side 3 av 6
Oppgåve 4 - Normaliseringsteori (15 %) a) Gå ut frå R = {A, B, C, D} og F = {A B; BC D}. Under er vist ein tabellførekomst for R. Kva for verdiar kan S, T, U, V og W ha for at tabellførekomsten skal vere gyldig. b) Gå ut frå R = {A, B, C, D, E} og F = {AC BD; EC BD; A E; E A}. R er minst på første normalform. Kva er den høgaste normalforma som er oppfylt av R? Du må underbyggje svaret ditt. c) Gå ut frå tabellen R = {A, B, C}. Attributta har same verdimengde: dom(a) = dom(b) = dom(c) = {1,2,3}. i) Gå ut frå F = F. Kva er det maksimale talet på rader som kan vere i ein tabellførekomst (r(r))? ii) Gå ut frå F = {A BC}. Kva er det maksimale talet på rader som kan vere i en tabellførekomst? d) Ein tabell, R, splittast i to (komponent-)tabellar, R1 og R2. Forklar kva det vil seie at dekomponeringa har tapsløst-join eigenskapen (eng: lossless join). Vurder om det er nødvendig å ha denne eigenskapen. Du må underbyggje svaret ditt. e) Gå ut frå R = {A, B, C} og F = {A B}. En vanleg feil er å tru at A B fører med seg at A fører til eller bestemmer B. Forklar kvifor dette ikkje er ei god forklaring på den funksjonelle avhengigheten. Side 4 av 6
Oppgåve 5 Statisk hashing (5 %) Vi skal setje inn følgjande nøklar i ein statisk hashing-struktur: 27, 18, 9, 7, 16, 13, 11. Vi har 4 blokker og ei overflytsblokk. Kvar blokk har plass til to nøklar. Se figuren under. Du kan bruke hashfunksjonen: h(k) = K MOD 4 Vis korleis strukturen ser ut til slutt når du har satt inn alle nøklane. 00 Overflow 01 10 11 Oppgåve 6 Lagring, indeksering og queries (10 %) Vi har ein database som lagrer webclicks i ein tabell: Click (clickid, user, url, time) Kvar post (record) i tabellen er 100 byte lang og kvar blokk er 8 KB (8192 bytes). Vi har registrert 300 000 klikk i databasen. a) Vi ønsker å lagre tabellen i eit clustered B+-tree med clickid (8 byte) som søkjenøkkel. Kor mange blokker er det på kvart nivå i B+-treet? Forklar evt. føresetnader du tar. b) Vi ønsker å utføre følgjande query: SELECT url, count(*) AS clickcount FROM Click GROUP BY url ORDER BY clickcount DESC; Korleis vil du indeksere tabellen for å kunne svare på queriet? Grunngi svaret ditt. Side 5 av 6
Oppgåve 7 Transaksjonar (15 %) a) Forklar dei fire omgrepa som forkortast ACID. b) Vi har ei historie: H 1: r 1(A); w 2(A); w 2(B); w 3(B); w 1(B); C 1; C 2; C 3; Vi innfører tofaselåsing (rigorous 2PL). Skriv om historia slik at ho bruker 2PL. Innfør operasjonane wl(x) write_lock(x) og rl(x) read_lock(x). c) For kvar klasse av samtidigheitsproblem gitt under, kva for slag ser du i historia H1 i b) og kvifor / kvifor ikkje? - Dirty read - Lost update - Unrepeatable read - Incorrect summary Oppgåve 8 Transaksjonar: Recovery ARIES (10 %) a) Beskriv og forklar kva som skjer i dei tre fasane av recovery etter krasj i ARIES. b) Kva er PageLSN og kvifor er det ein viktig oppfinning? Side 6 av 6