Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Like dokumenter
Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Løsningsskisse til eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Skisse til løsning av eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Løsningsskisse til eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Oppgave 1 Datamodellering 25 %

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Oppgave 1 ER- og relasjonsmodell 10 %

Løsning til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Oppgave 1 Datamodellering 22 %

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Løsningsforslag for Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksamensoppgåve i TDT4145 Datamodellering og databasesystemer

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksamensoppgåve i TDT4145 Datamodellering og databasesystemer

EKSAMENSOPPGAVE I TDT4145 DATAMODELLERING OG DATABASESYSTEMER. Faglig kontakt under eksamen: Svein Erik Bratsberg og Roger Midtstraum

Repetisjon: Normalformer og SQL

Normalisering. ER-modell

Eksamensoppgåve i TDT4145 Datamodellering og databasesystem

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Eksamensoppgåve i TDT4145 Datamodellering og databasesystemer

Databaser. - Normalisering -

EKSAMEN 6102 / 6102N DATABASER

EKSAMEN DATABASER

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

INF3100 V2018 Obligatorisk oppgave nr. 2

Eksamensoppgåve i TDT4145 Datamodellering og databasesystem

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

Relasjonsdatabasedesign

Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF

Det matematisk-naturvitenskapelige fakultet. Kontroller at oppgavesettet er komplett før du begynner å besvare det.

IN2090 Databaser og datamodellering. Databasedesign og normalformer

1. SQL datadefinisjon og manipulering

Relasjonsdatabasedesign

Repetisjonsforelesning, SQL og utover

Relasjonsdatabasedesign

Relasjonsdatabasedesign

EKSAMENSOPPGÅVE I TDT4145 DATAMODELLERING OG DATABASESYSTEMER

Databasesystemer, oversikt

Integritetsregler i SQL. Primærnøkler

UNIVERSITETET. Relasjonsdatabasedesign

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Normalisering. Hva er normalisering?

UNIVERSITETET. Indeksering. Hvordan finne et element raskt? Vera Goebel, Ellen Munthe-Kaas

Normalisering. Hva er normalisering?

Minikompendium TDT4145 databasemod og dbsys

Integritetsregler i SQL

Relasjonsdatabasedesign

Databasemodellering og DBMS. Oppsummering

1. Innføring i bruk av MySQL Query Browser

Oppgaver INF3100. Oversikt over innholdet

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer.

Isolasjon i postgres og mysql

Relasjonsdatabasedesign

Plenum: Nøkler, normalformer og funksjonelle avhengigheter

Dagens tema: Oppdateringsanomalier Normalformer

Eksamensoppgåve i TDT4145 Datamodellering og databasesystem

1. Normalisering Kommentarer til læreboka

Andre sett obligatoriske oppgaver i INF3100 V2013

Øving 5: Transaksjonshåndtering, logging og normalisering

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

Relasjonsdatabasedesign

Oppdateringsanomalier Normalformer

Introduksjon til fagfeltet

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

UNIVERSITETET I OSLO. Indeksering. Hvordan finne et element raskt? Institutt for Informatikk. INF Ellen Munthe-Kaas

UNIVERSITETET I OSLO

Løsningsforslag maskindatabasen på Ifi SQL og normalisering

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Normalisering. Hva er normalisering?

EKSAMEN 6102 / 6102N DATABASER

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet. Løsningsforslag

UNIVERSITETET I OSLO

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser

For alle ikke-trivielle FDer X A i R: eller A er et nøkkelattributt i R eller X K for noen kandidatnøkkel K i R

1. SQL spørringer mot flere tabeller

Hva kjennetegner god relasjonsdatabasedesign? Eksempel: Grossistdatabase versjon 1

INF1300 Introduksjon til databaser

Løsningsforslag for Eksamensoppgave i TDT4190 Distribuerte systemer

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

Integritetsregler i SQL

Datamodellering og databaser SQL, del 2

Spørsmålskompilering del 1

Databaser: Relasjonsmodellen, del I

Relasjonsdatabasedesign

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Transkript:

Institutt for datateknikk og informasjonsvitenskap Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer Eksamensdato: 4. august 015 Eksamenstid (fra-til): 15:00-19:00 Hjelpemiddelkode/Tillatte hjelpemidler: D Ingen trykte eller håndskrevne hjelpemidler tillatt. Bestemt, enkel kalkulator tillatt. Versjon 5. august 015. Oppgave 1 Datamodeller (0 %) a) Foretrukket løsning: Person(PID, Name) Phone(PersonID, PhoneNo) -- PersonID er fremmednøkkel mot Person-tabellen. Dog(RegNo, Name, Breed, OwnerID) -- OwnerID er fremmednøkkel mot Person-tabellen. UnwantedIncident(DogRegNo, VictimPersonID, WalkerPersonID, Severity) -- DogRegNo er fremmednøkkel mot Dog-tabellen. VictimPersonID og WalkerPersonID er fremmednøkler mot Person-tabellen. RegisteredDogWalker(DogRegNo, WalkerPersonID) -- DogRegNo er fremmednøkkel mot Dog-tabellen. WalkerPersonID er fremmednøkkel mot Person-tabellen. Siden spesialiseringen av Person er delvis, må vi ha en tabell for superklassen. Det som kan være et alternativ er å ha egne tabeller for subklassene. Gevinsten ved en slik løsning vil være liten i forhold til den økte kompleksiteten i relasjonsskjemaet. Side 1 av 8

b) ER-diagrammet under viser en mulig datamodell. Det vil være like riktig å spesifisere attributtene inne i boksene. Oppgave Relasjonsalgebra og SQL (1 %) I SQL-oppgavene er svarene gitt med join spesifisert i FROM-delen. Det skal ikke trekkes for løsninger som spesifiserer join-betingelser i WHERE-delen. a) ER-diagram Side av 8

b) Relasjonsalgebra: c) SELECT TagID, Tag FROM Hashtags WHERE Tag LIKE %Trondheim% ORDER BY Tag ASC; d) DELETE FROM Likes WHERE UserID = xyz00 AND PhotoID IN (SELECT PhotoID FROM Photos WHERE PhotographerID = abc11 ) e) SELECT UserID FROM Comments WHERE PhotoID IN (SELECT PhotoID FROM Metadata NATURAL JOIN Hashtags WHERE Tag = #Beiarn ) Oppgave 3 Teori (19 %) a) En funksjonell avhengighet, X > Y, gjelder hvis det for alle tupler (rader) som har samme verdier for attributtene i X, må være slik at verdiene for attributtene i Y er de samme. Tabelleksempel: Person(PersonNr, Navn, Fødselsår). PersonNr -> Navn vil gjelde når PersonNr er unikt for en person og hver person kan ha bare ett navn. FødselsÅr -> Navn vil ikke gjelder. Det ville i så fall forutsatt at alle med samme fødselsår har samme navn. b) Tapsløst-join-egenskapen garanterer at man ved joining av komponent-tabellene til utgangspunkt-tabellen, alltid vil få samme innhold som i utgangspunkt-tabellen. Dersom man ikke har tapsløst-join-egenskapen, vil en sammenjoining av komponent-tabellene kunne gi tupler som ikke finnes i utgangspunkt-tabellen. Side 3 av 8

En dekomponering i komponenttabeller har tapsløst-join-egenskapen hvis komponenttabellenes felles attributt(er) er en supernøkkel i en eller begge komponenttabellene. R(a, b, c) med F = { b -> c } kan splittes tapsløst i R1(a b) og R(b c) siden R1 og R sitt felles attributt (b) er en supernøkkel i R. R(a, b, c) med F = { b -> c } kan ikke splittes tapsløst i R1(a b) og R(a c) siden R1 og R sitt felles attributt (a) ikke er en supernøkkel i verken R1 eller R. c) Tabellens eneste kandidatnøkkel er abe. Vi har ikke-nøkkel-attributter som er delvis avhengig av kandidatnøkkelen (b -> c og e -> d). Dette bryter kravet til andre normalform. Den høyeste normalformen som oppfylles er derfor 1NF. d) En mulig dekomponering er: R1(A, B, C, E), R(A, D), R(B, D) og R4(C, D) og R5(D, E). ABCE er primærnøkkel i R1. A er primærnøkkel i R. B er primærnøkkel i R3, C er primærnøkkel i R4 og E er primærnøkkel i R5. Dekomponeringer vurderes etter fire forhold: Attributtbevaring: R = R1 R R3 R4 R5 så det er ivaretatt. FD-bevaring: A -> D ivaretas i R, B - > D ivaretas i R3, C -> D ivaretas i R4 og E -> D ivaretas i R5 Det betyr at alle FD-er i F er ivaretatt og vi har FD-bevaring. Tapsløst-join: Figuren under vises hvordan R1, R, R3, R4 og R5 kan joines tapsløst til R (i hver av joinene er komponent-tabellenes felles attributter en supernøkkel i minst en av komponenttabellene). Egenskapen kan alternativt vises ved å bruke matrisemetoden (algoritme 15.3 i læreboken). Normalform: R1 har F1 = og er på BCNF siden R1 ikke har noen ikke-trivielle funksjonelle avhengigheter. R har F = {A -> D} og er på BCNF siden A er en (super-)nøkkel i R. R3 har F3 = {B -> D} og er på BCNF siden B er (super-)nøkkel i R3. R4 har F4 = {C -> D} og er på BCNF siden C er (super-)nøkkel i R4. R5 har F5 = {E -> D} og er på BCNF siden E er (super-)nøkkel i R5. Dekomponeringen har alle ønskede egenskaper. Side 4 av 8

Side 5 av 8

Oppgave 4 Lagring og skalering (10 %) Dette er hentet fra pensumnotatet «Storage definitions» og viser typiske lagrings- og indekseringsalternativer brukt i systemer. Det finnes andre alternativer også. Clustered B+-tree/clustered index. There is a B+-tree index on the primary key. The leaf level in the B+-tree stores the actual records/rows of the table. Thus, it is a clustered index. root 5 3 5 7 1 4 1 4 1 6 7 4 7 3 3 This alternative is used within MySQL's InnoDB storage engine. It is also the storage alternative used in MicroSoft's SQL server when a primary key is defined for a table. There, it is called a clustered index. This alternative is good for most cases: Direct access on key, range scans, insertions, Heap file and B+-tree. The table is stored in a heap file. There is a B+-tree index on the primary key. There may be a hash index on some fields of the records. B+-tree Hash index root 5 3 5 7 1 4 1 1 4 6 7 4 3 7 3 Heap file with a B+-tree index is used in MySQL's MyISAM storage engine. Heap files are good for insertions and table scans. The B+-tree is useful for access on the indexed attribute. The hash index is perfect for direct access on the indexed attribute. Heap file. In MicroSoft's SQL Server you get a heap file when no primary key is defined for a table. The heap file is good for insertions and full table scans, but not good for others accesses. Clustered hash index. Hash index on the primary key. Clustered index storing the actual records/rows of the table, i.e. a clustered hash index. It is called a hash cluster in Oracle. Hash index Side 6 av 8

Oppgave 5 B+-trær (10 %) a) Her får alle postene plass i ei blokk, dermed består B+-treet av ei blokk på nivå 0 og som også er rota til treet. Det er viktig at studenten viser at postene er sortert på søkenøkkel. I dette tilfellet er etternavnet søkenøkkel. root Level=0 (16,Berntsen,Bernt,.) (13,Hansen,Hans,.) (14,Hanssen,Jens,.) (15,Olsen,Ole,.) b) Etter splitting får vi (minst) to nivåer. Det kan være flere nivåer over de som er vist. Rota her peker på level=1, men den kan være en peker til level= eller level=3 også, avhengig av hvor mange poster som er satt inn. Vi har ikke vist sidevegspekere annet enn mellom de to aktuelle blokkene på nivå 0. (77,Fransen,Frans, ) er vist for å kunne illustrere den forrige pekeren i blokka på level=1. root Level=1 (Fransen, ) (Hanssen, ) Level=0 (14,Hanssen,Jens,.) Level=0 (77,Franssen,Frans,.) (13,Hansen,Hans,.) Oppgave 6 Transaksjoner - serialiserbarhet (5 %) H1: r1(a); w1(a); r(b); r(a); w(a); 1 ->. Konflikserialiserbar H: r1(a); w1(a); w(a); 1->. Konfliktserialiserbar. H3: r1(a); r(c); r1(c); r3(a); r3(b); w1(a); w3(b); r(b); w(c); w(b); 3->1-> og 3->. Konfliktserialiserbar. Side 7 av 8

Oppgave 7 Transaksjoner - recovery (10 %) a) PageLSN er et felt i datablokkene som forteller hvilken loggpost som sist endret blokka. 1. Det brukes for å kunne avgjøre om en loggpost trenger redo mot denne blokka.. Det brukes også til å sjekke at loggen er skrevet før datablokka, dvs. når datablokka skal skrives, sjekkes det om loggen er skrevet ut fram til og med PageLSN. Hvis nei, må loggen skrives først (WAL). b) NO-FORCE har den fordelen at ved Commit må man skrive loggen og ikke de skitne blokkene. 1. Loggen er sekvensiell og kan skrives raskt ut til disk. FORCE krever utskrift av datablokker og det kan være mange blokker og de kan være spredd utover på disken.. NO-FORCE (redo-logging) gjør også at vi kan ha radlåser framfor blokklåser. c) Man må sjekke at loggen er skrevet ut først ved å se på PageLSN og sjekke mot FlushedLSN (nyeste skrevne loggpost). Hvis loggen ikke er skrevet ut, så må man skrive ut denne først. Side 8 av 8