Institutt for datateknikk og informasjonsvitskap Eksamensoppgåve i TDT4145 Datamodellering og databasesystem Fagleg kontakt under eksamen: Svein Erik Bratsberg: 99539963 Roger Midtstraum: 99572420 Eksamensdato: 6. august 2014 Eksamenstid (frå-til): 09:00 13:00 Hjelpemiddelkode/Tillatne hjelpemiddel: D Ingen trykte eller handskrivne hjelpemiddel tilletne. Bestemt, enkel kalkulator tillate. Annan informasjon: Målform/språk: Norsk nynorsk Sidetal: 5 Sidetal vedlegg: 0 Kontrollert av: Dato Sign. Merk! Studentane finn sensur i Studentweb. Har du spørsmål om sensuren må du kontakte instituttet ditt. Eksamenskontoret vil ikkje kunne svare på slike spørsmål.
Oppgåve 1 Datamodellar (20 %) a) (3 %) I ER-modellar kan vi uttrykke kardinalitets-restriksjonar som vist i figuren under. Forklar kva for restriksjonar (eng: constraints) ein kan uttrykke med x, y, s og t. b) (5 %) I ER-diagrammet under har vi vist ein ER-modell med bruk av kategori (eng: category). Vis korleis dette ER-diagrammet kan omsetjas til eit relasjonsskjema som samsvarar med ER-modellen så godt som råd er. c) (12 %) Lag ein ER-modell (du kan bruke alle modellelement som er med i pensum) for denne situasjonen: I Nice er det mulig å leie bysyklar. Rundt om i byen finnast ein del sykkelstasjonar der det er låseterminalar med plass til eit tal bysyklar. For å kunne leie syklar registrerer ein seg med mobiltelefonnummer, namn og eit betalingskort. Når ein ønskjer å leie ein sykkel bruker ein den registrerte mobiltelefonen og ringer eit telefonnummer som er oppgitt for den aktuelle låseterminalen. Om alt er i orden, blir sykkelen frigjort og så betaler ein for tida fram til ein igjen låser sykkelen fast i ein sykkelstasjon. Alle syklar har ein unik RFID-kode som låseterminalen registrerer når sykkelen blir levert inn. Sykkel-leia blir avslutta automatisk når låseprosedyren er fullført. Dei som driver sykkelutleia ønskjer å holde oversikt over kor syklane er låst fast, kva for syklar som er i bruk, registrerte brukarar, kven som har ein sykkel til låns og kva for utlån som er fullført. Databasen må ha nok informasjon til å dokumentere kundane sin bruk av syklane. Det finnes ulike typar syklar og ein registrerar når ein sykkel settas i drift i systemet. Forklar kort eventuelle føresetnader du finn det nødvendig å gjere. Side 2 av 5
Oppgåve 2 Relasjonsalgebra og SQL (20 %) Ta utgangspunkt i denne relasjonsdatabasen (primærnøklar er understreka) for ein enkel student-emne-eksamen-database: Student(StudentNo, Name, Email) Subject(SubjectNo, Name) Exam(ExamNo, SubjectNo, Year, Month, Date) SubjectNo er framandnøkkel mot Subject-tabellen. SubjectNo kan ikkje ha NULL-verdi. ExamRegistration(StudentNo, ExamNo, Grade) StudentNo er framandnøkkel mot Student-tabellen. StudentNo kan ikkje ha NULL-verdi. ExamNo er framandnøkkel mot Exam-tabellen. ExamNo kan ikkje ha NULL-verdi. Data blir lagt inn ved oppmelding til eksamen. Grade setjas til NULL inntil sensuren er klar. Relasjonsalgebra kan formulerast som tekst eller grafar. Om du beherskar begge notasjonene føretrekk vi at du svarar med grafar, men du blir ikkje trekt for å svare med tekst. a) (4 %) Lag eit ER-diagram (du kan bruke alle verkemiddel som er med i pensum) som samsvarar med relasjonsskjemaet så godt som råd er. Forklar kort eventuelle føresetnader du finn det nødvendig å gjere. b) (3 %) Lag ei spørjing i relasjonsalgebra som finn StudentNo, Name og Email for alle studentar som var oppmeldt til ein av dei eksamenane som ble arrangert 26. mai 2014. c) (3 %) Lag ei spørjing i relasjonsalgebra som finn alle studentar som ikkje er oppmeldt til noen eksamen i 2014. I resultatet skal du ta med StudentNo, Name og Email. d) (3%) Lag ei spørjing i SQL som finn alle emne som er registrert med minst ein eksamen i 2014. Resultatet skal bestå av SubjectNo og Name, det skal ikkje være duplikat i resultatet, og resultattabellen skal være sortert etter SubjectNo i stigande rekkefølgje. e) (3 %) Lag ei spørjing i SQL som finner kor mange gonger karakteren A har vore gitt sidan emnet blei oppretta, i kvart emne som har hatt ein eller fleire eksamenar i løpet av 2014. Resultattabellen skal ha kolonnane SubjectNo, Name og Number of A. Resultatet skal være sortert etter Number of A i minkande rekkefølgje. f) (4 %) Føresett at alle framandnøklane er definert med restriksjonen ON DELETE RESTRICT eller ON DELETE NO ACTION (disse er likeverdige). Vi ønskjer å slette studenten som har StudentNo 100. Vis korleis du vil gjere dette i SQL. Side 3 av 5
Oppgåve 3 Teori (20 %) a) (4 %) Gitt R = {A, B, C, D, E} og F = {AB->C, C->E, AE->B}. Tillukkinga AB + = ABCE. Forklar kva dette betyr. Finn alle kandidatnøklar (eng: candidate key) for tabellen R. Du må grunngje svaret ditt. b) (6 %) Tabellen R = {A, B, C D} dekomponerast i R1 = {A, C} og R2 = {B, C, D}. Finn ei mengd funksjonelle avhengigheter (eng: functional dependencies), F, som gjer at denne dekomponeringa har tapslaus-join-eigenskapen (eng: lossless join property). Med utgangspunkt i din F, skal du finne alle kandidatnøklar og høgaste normalform for tabellane R, R1 og R2. Du må grunngje svaret ditt. c) (4 %) Gitt R = {A, B, C, D, E} og F = {A -> B, B ->C, C->D, D->E}. Gå ut frå at R oppfyller 1. normalform. Finn den høgaste normalforma som R oppfyller. Du må grunngje svaret ditt. d) (6 %) Gitt R = {A, B, C, D, E} og F = {A -> B, B ->C, C->D, D->E}. Gå ut frå at R oppfyller 1. normalform. R skal om nødvendig dekomponerast slik at alle komponentar er på Boyce- Codd normalform (BCNF). Dekomponeringa skal ha tapslaus-join-eigenskapen, attributtbevaring og bevaring av funksjonelle avhengigheter. Du må forklare korleis di løysing oppfyller alle krava. Oppgåve 4 Extendible hashing (10 %) Vi skal sette inn følgjande nøklar i ein hashfil med extendible hashing i den følgjande rekkefølgjen: 1, 2, 3, 4, 5, 6, 7, 8, 9 og 10. Det er plass til maksimalt to nøklar i kvar blokk. Vis tilstanden til hashfila til slutt. Føresett det er 4 blokker i hashfila når du starter med innsettinga og at hashfunksjonen er h(k) = K MOD 16. Hugs å ta med "global depth" og "local depth". Oppgåve 5 Lagring og queryutføring (15 %) Føresett følgjande tabell: CREATE TABLE Employee (empno INT, lastname CHAR(30), firstname CHAR(30), email CHAR(30), startyear INT); Vi har følgjande typar lagring og indeksar 1. Heapfil 2. Clustered B+-tre 3. Unclustered B+-tre og heapfil 4. Clustered hashfil 5. Unclustered hashfil og heapfil For kvart av SQL-querya under foreslå kva for lagring/indekstype som er best. Hvis du gjør bruk av ein indeks, fortell kva for attributt som er indeksert. Grunngje svara. Side 4 av 5
i) INSERT INTO Employee VALUES (12123,'Hansen','Hans','hans@email.org',2013); ii) SELECT lastname, firstname, email, startyear FROM Employee WHERE startyear=2012; iii) SELECT * FROM Employee; iv) SELECT DISTINCT lastname FROM Employee ORDER BY lastname; v) UPDATE Employee SET startyear = 2012 WHERE empno=12123; Oppgåve 6 Transaksjonar - SERIALIZABLE (5 %) Forklar kva for samtidighetsproblem vi unngår ved å bruke SQLs isolasjonsnivå SERIALIZABLE. Oppgåve 7 Transaksjonar historie og låsar (10 %) a) Sjå på sekvensen av operasjonar frå to transaksjonar, T1 og T2, forklart i tabellen under. Kva er det som er galt med denne sekvensen av operasjonar? T1 Read(X); X := X N; Write(X); Read(Y); Y := Y N; Write(Y); T2 Read(X); X := X+M; Write(X); b) Ved å innføre konservativ 2PL (tofaselåsing), vis korleis sekvensen av operasjonar blir. Side 5 av 5