INF1300 Introduksjon til databaser

Like dokumenter
INF1300 Introduksjon til databaser

Oppdateringsanomalier Normalformer

Dagens tema: Oppdateringsanomalier Normalformer

Oppdateringsanomalier. Normalformer. Institutt for informatikk INF

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabaseteori

Relasjonsdatabasedesign

God Databasedesign: På vei mot Normalformer

Relasjonsdatabasedesign

Hva kjennetegner god relasjonsdatabasedesign? Eksempel: Grossistdatabase versjon 1

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

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

Relasjonsdatabasedesign

UNIVERSITETET. Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

INF3100 Databasesystemer

UNIVERSITETET I OSLO. Relasjonsmodellen. Relasjoner og funksjonelle avhengigheter. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

IN2090 Introduksjon til databaser

INF1300 Introduksjon til databaser

Plenum: Nøkler, normalformer og funksjonelle avhengigheter

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Normalisering. Hva er normalisering?

INF212 - Databaseteori. Kursinnhold

Normalisering. Hva er normalisering?

Relasjonsdatabasedesign. Ekstramateriale: Normalformer utover 4NF (ikke pensum)

IN2090 Databaser og datamodellering. Databasedesign og normalformer

UNIVERSITETET I OSLO. Oppskriftsbok. FDer og MVDer Relasjonsalgebra. Institutt for Informatikk. INF3100 Ellen Munthe-Kaas 1

Relasjonsdatabasedesign (forts.)

Oppskriftsbok. FDer og MVDer - oversikt: se s. 3 Relasjonsalgebra - oversikt: se s. 45

Normalisering. Hva er normalisering?

Dagens tema: Relasjonsmodellen (funksjonelle avhengigheter og nøkler, integritetsregler) Realisering: Fra ORM til relasjoner

Normalformer utover 4NF (ikke pensum)

INF3100 Databasesystemer

Relasjonsdatabasedesign (forts.)

INF1300 Introduksjon til databaser

Databaser. - Normalisering -

Normalisering. Partielle avhengigheter Transitive avhengigheter Normalformer: 1NF, 2NF, 3NF, BCNF Normaliseringsstegene Denormalisering

Oppgaver INF3100. Oversikt over innholdet

Kunnskapsorganisasjon og gjenfinning 1

Oppgaver INF3100. Oversikt over innholdet

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

Databaser: Relasjonsmodellen, del I

INF1300 Introduksjon til databaser

Løsningsforslag maskindatabasen på Ifi SQL og normalisering

1. Normalisering Kommentarer til læreboka

Relasjonsdatabasedesign, ekstramateriale (ikke pensum)

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Repetisjon: Normalformer og SQL

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

UNIVERSITETET RELASJONSALGEBRA. Regning g med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

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

Integritetsregler i SQL

Integritetsregler i SQL

Integritetsregler i SQL. Primærnøkler

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Relasjonsalgebraen. Algebra

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ragnar Normann

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

Universitetet i Oslo Institutt for informatikk. Relasjonsmodellen og normaliseringsteori. Til bruk i IN 212. Ragnar Normann.

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

Datamodellering med ORM

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

Løsningsforslag for Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas

Del 1: ER-modellering og databaseteori

Oppgave 1 ER- og relasjonsmodell 10 %

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1300 Introduksjon til databaser

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

INF1300 Introduksjon til databaser

EKSAMEN DATABASER

UNIVERSITETET I OSLO

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

UNIVERSITETET I OSLO

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

1. Relasjonsmodellen Kommentarer til læreboka

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

SQL og Mengdelære. Oracle, MySQL, Access, bruker forskjellige syntaks.

INF1300 Introduksjon til databaser

INF3100 V2018 Obligatorisk oppgave nr. 1

INF3100 Databasesystemer

INF3100. Databasesystemer

Gruppeøvelse 20/ Dagens tema: - Gruppering/realisering

Transkript:

UNIVERSITETET I OSLO INF300 Introduksjon til databaser Dagens tema: Oppdateringsanomalier Normalformer INF300..007 Ellen Munthe-Kaas

Hva kjennetegner god relasjonsdatabasedesign? Relasjonene samler beslektet informasjon Så lite dobbeltlagring som mulig Så få glisne relasjoner som mulig Korrekt totalinformasjon kan gjenskapes nøyaktig ved join INF300..007 Ellen Munthe-Kaas

Eksempel: Grossistdatabase versjon I Produkt(Kode, Produktnavn, Produsent, #Enheter) Bestilling(Kode, Kundenr, Navn, Adresse, #Bestilt) Integritetsregler i tillegg til primærnøklene:. Verdiene i Navn og Adresse er funksjonelt avhengige av verdien i Kundenr. Kode i Bestilling er fremmednøkkel til Kode i Produkt INF300..007 Ellen Munthe-Kaas 3

Relasjonene samler beslektet informasjon: Tekstlig nærhet gjenspeiler logisk nærhet (Med tekstlig nærhet menes her samlokalisering i en relasjon) Brudd på dette prinsippet har en tendens til å påtvinge duplisering av data og dermed forårsake oppdateringsanomalier INF300..007 Ellen Munthe-Kaas 4

Oppdateringsanomalier Innsettingsanomalier Opprettholde konsistente verdier Håndtere sekundær informasjon Håndtere nil i kandidat- og fremmednøkler Slettingsanomalier Unngå tap av sekundær informasjon Modifiseringsanomalier Opprettholde konsistente verdier Oppdatere sekundær informasjon INF300..007 Ellen Munthe-Kaas 5

Eksempelinstans Bestilling Bestilling Kode Kundenr Navn Adresse #Bestilt A A B a a b 3 8 Sekundær informasjon «Navn» og «Adresse» er eksempler på sekundær informasjon Dette er nyttig informasjon om kundene, men den er unødvendig i en tabell over bestillingene INF300..007 Ellen Munthe-Kaas 6

Så lite dobbeltlagring som mulig: Plassbehovet minimaliseres Oppdatering forenkles INF300..007 Ellen Munthe-Kaas 7

Så få glisne relasjoner som mulig: Plassbehovet minimaliseres Unngår problemer med hvordan join på nil-verdier skal håndteres Unngår problemer med hvordan aggregeringsfunksjoner skal håndtere nilverdier INF300..007 Ellen Munthe-Kaas 8

Hvordan unngå dobbeltlagring Splitt (dekomponer) relasjonene slik at dobbeltlagring blir borte! Instanser for de dekomponerte relasjonene fremkommer fra opprinnelig instans ved projeksjon INF300..007 Ellen Munthe-Kaas 9

Eksempel: Grossistdatabase versjon Produkt(Kode, Produktnavn, Produsent, #Enheter) Kunde(Kundenr, Navn, Adresse) Ordre(Kode, Kundenr, #Bestilt) Integritetsregler i tillegg til primærnøklene: Kode i Ordre er fremmednøkkel til Produkt Kundenr i Ordre er fremmednøkkel til Kunde INF300..007 Ellen Munthe-Kaas 0

Eksempelinstanser Kunde, Ordre Ny modell Kunde Kundenr Navn Adresse A B a b Ordre Kode Kundenr #Bestilt 3 8 Bestilling Gammel modell Kode Kundenr Navn Adresse #Bestilt A A B a a b 3 8 INF300..007 Ellen Munthe-Kaas

Krav til dekomposisjoner Vi ønsker å kunne rekonstruere den opprinnelige instansen Dekomposisjon av relasjoner må derfor gjøres på en måte som sikrer at vi alltid kan gjenskape den opprinnelige instansen ved naturlig join INF300..007 Ellen Munthe-Kaas

Kunde Ordre Kunde Kundenr Navn Adresse Ordre Kode Kundenr #Bestilt A B a b 3 8 Kunde Ordre = Bestilling Kundenr Navn Adresse Kode #Bestilt A A B a a b 3 8 INF300..007 Ellen Munthe-Kaas 3

Eksempel: Grossistdatabase, versjon 3 Produkt(Kode, Produktnavn, Produsent, #Enheter) Kunde(Kundenr, Navn, Adresse) Koderegister(Kode, Kundenr) Antall(Kundenr, #Bestilt) Integritetsregler: Kode i Koderegister er fremmednøkkel til Produkt Kundenr i Koderegister er fremmednøkkel til Kunde Kundenr i Antall er fremmednøkkel til Kunde INF300..007 Ellen Munthe-Kaas 4

Eksempelinstanser Koderegister, Antall Koderegister Antall Koderegister Antall Ordre! Kode Kundenr Kundenr #Bestilt Kode Kundenr #Bestilt 3 8 3 8 8 3 Naturlig join på de to tabellene gir flere tupler enn i den opprinnelige tabellen! = Falske tupler INF300..007 Ellen Munthe-Kaas 5

Korrekt totalinformasjon kan gjenskapes nøyaktig ved join: Ingen falske tupler genereres INF300..007 Ellen Munthe-Kaas 6

Normalformer Problem: Hvordan vurdere objektivt om en samling relasjoner er god/dårlig? Normalformer er et uttrykk for hvor godt vi har lykkes i en dekomposisjon At et skjema er på en normalform sikrer at visse typer dobbeltlagring ikke forekommer Jo høyere normalform, jo mindre dobbeltlagring INF300..007 Ellen Munthe-Kaas 7

Litt definisjoner (gamle og nye) I de videre definisjonene tenker vi oss gitt en relasjon R(A,A,...,An) med tilhørende integritetsregler. La X R bety at X {A,A,...,An}. Hvis t er et tuppel i en instans av R, betegner t[x] verdiene i t s X-attributter. INF300..007 Ellen Munthe-Kaas 8

Integritetsregler Integritetsregler begrenser mengden av lovlige instanser for et databaseskjema. Primærnøkler uttrykker én type integritetsregler. Primærnøkler er spesialtilfeller av kandidatnøkler. Kandidatnøkler er spesialtilfeller av funksjonelle avhengigheter. (I tillegg fins andre typer integritetsregler.) INF300..007 Ellen Munthe-Kaas 9

Nøkler X er en supernøkkel i R: X R, og ingen instans av R får inneholde to forskjellige tupler t og t hvor t[x] = t[x]. X er en kandidatnøkkel i R: X er en supernøkkel i R, og for alle A i X er X \ A ikke en supernøkkel i R. (Dvs. X er en minimal supernøkkel.) X er en primærnøkkel i R: X er en spesielt utpekt kandidatnøkkel i R. INF300..007 Ellen Munthe-Kaas 0

Nøkkelattributt Et nøkkelattributt er et attributt som er med i en kandidatnøkkel. Et ikke-nøkkelattributt er et attributt som ikke er med i noen kandidatnøkkel. INF300..007 Ellen Munthe-Kaas

Funksjonell avhengighet Gitt en relasjon R og skranker for R, og gitt X,Y R. Y er funksjonelt avhengig av X hvis vi for enhver lovlig instans av R har at hvis instansen inneholder to tupler t og t hvor t[x] = t[x], så må t[y] = t[y]. I så fall skriver vi X Y. Ofte snakker vi for korthets skyld om «FDen X Y» (der FD står for Functional Dependency) Vi sier at «Y følger av X», eller at «X bestemmer Y» Integritetsregelen X AA...Ak kan alternativt representeres ved k FDer X A, X A,..., X Ak (hvor høyresidene består av bare ett attributt). INF300..007 Ellen Munthe-Kaas

Funksjonell avhengighet og kandidatnøkler Merk at hvis X er en supernøkkel, så holder X Y for enhver Y. Så hvis X er en kandidatnøkkel, holder X Y for enhver Y. Omvendt: Hvis X Y for enhver Y, så er X en supernøkkel. Spesielt betyr dette at hvis vi angir at R(A,A,...,An) har en kandidatnøkkel X, betyr det at R har FDen X AA...An. INF300..007 Ellen Munthe-Kaas 3

Grossistdatabase versjon I med integritetsregler Produkt(Kode, Produktnavn, Produsent, #Enheter) Bestilling(Kode, Kundenr, Navn, Adresse, #Bestilt) Integritetsregler:. Kode Produktnavn Produsent #Enheter (i Produkt). Kundenr Kode #Bestilt (i Bestilling) 3. Kundenr Navn Adresse (i Bestilling) 4. Kode i Bestilling er fremmednøkkel til Produkt INF300..007 Ellen Munthe-Kaas 4

Normalformer, oversikt NF NF 3NF BCNF INF300..007 Ellen Munthe-Kaas 5

Utgangspunkt for normalformene NF-BCNF Alle integritetsregler er i form av FDer (i tillegg til domeneskranker og fremmednøkler) INF300..007 Ellen Munthe-Kaas 6

Første normalform En relasjon er NF hvis det bare er tillatt med atomære verdier i attributtene INF300..007 Ellen Munthe-Kaas 7

Andre normalform En relasjon R er NF hvis enhver ikketriviell FD X A (hvor X R og A R) tilfredsstiller minst ett av følgende tre krav: X er en supernøkkel A er et nøkkelattributt X W for noen kandidatnøkkel W i R R bryter NF hvis det fins en ikketriviell FD X A hvor A er et ikke-nøkkelattributt og det fins en kandidatnøkkel W slik at X W (ekte delmengde). INF300..007 Ellen Munthe-Kaas 8

Brudd på andre normalform FD X A hvor X utgjør noen av, men ikke alle, attributtene i en av kandidatnøklene og A er et ikke-nøkkelattributt. X A X er skravert. Kandidatnøkler er markert med lyseblått. INF300..007 Ellen Munthe-Kaas 9

Tredje normalform En relasjon R er 3NF hvis enhver ikketriviell FD X A tilfredsstiller minst ett av følgende to krav: X er en supernøkkel A er et nøkkelattributt R bryter 3NF hvis det fins en ikketriviell FD X A hvor A er et ikke-nøkkelattributt og X ikke er en supernøkkel. INF300..007 Ellen Munthe-Kaas 30

Brudd på tredje, men ikke andre, normalform FD X A hvor (noen av) attributtene i X er ikkenøkkelattributter, eventuelle nøkkelattributter i X ikke omfatter noen kandidatnøkkel, og A er et ikkenøkkelattributt. X A X A INF300..007 Ellen Munthe-Kaas 3

Boyce-Codd normalform En relasjon R er BCNF hvis enhver ikketriviell FD X A tilfredsstiller følgende krav: X er en supernøkkel R bryter BCNF hvis det fins en ikketriviell FD X A hvor X ikke er en supernøkkel. INF300..007 Ellen Munthe-Kaas 3

Brudd på Boyce-Codd, men ikke tredje, normalform FD X A hvor A er et nøkkelattributt og X ikke er en supernøkkel. X A X A X A INF300..007 Ellen Munthe-Kaas 33

Normalisering Normalisering går ut på å dekomponere relasjoner med lav normalform til relasjoner med høyere normalform. Gitt en relasjon R(XYZ) med en FD X Y. Hvis R dekomponeres til S(XY), S(XZ), vil vi ikke kunne få falske tupler ved naturlig join av S og S. INF300..007 Ellen Munthe-Kaas 34

Normalisering begrensninger Det lar seg alltid gjøre å normalisere til 3NF uten at noen funksjonelle avhengigheter går på tvers av relasjonene Det lar seg ikke alltid gjøre å normalisere til BCNF uten at noen funksjonelle avhengigheter går på tvers av relasjonene INF300..007 Ellen Munthe-Kaas 35

ORM-UML og normalisering Gruppering av korrekte ORM-UMLdiagrammer gir alltid 3NF Gruppering av korrekte ORM-UMLdiagrammer gir som regel BCNF. Unntakene skyldes alltid problemer knyttet til ekvivalente stier INF300..007 Ellen Munthe-Kaas 36

ORM-UML og NF A B Den grupperende rollen er alltid entydig. Datamodellen blir alltid NF. INF300..007 Ellen Munthe-Kaas 37

A B C ORM-UML og NF Hvis B C plasseres på E også, vil NF bli brutt. INF300..007 Ellen Munthe-Kaas 38

A B C ORM-UML og 3NF Hvis A C representeres i tillegg til A B, B C, vil 3NF bli brutt INF300..007 Ellen Munthe-Kaas 39

A B C ORM-UML og BCNF INF300..007 Ellen Munthe-Kaas 40