Dagens tema: Oppdateringsanomalier Normalformer

Like dokumenter
INF1300 Introduksjon til databaser

Oppdateringsanomalier Normalformer

INF1300 Introduksjon til databaser

Oppdateringsanomalier. Normalformer. Institutt for informatikk INF

Relasjonsdatabasedesign

Relasjonsdatabasedesign

God Databasedesign: På vei mot Normalformer

Relasjonsdatabaseteori

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Hva kjennetegner god relasjonsdatabasedesign? Eksempel: Grossistdatabase versjon 1

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

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

UNIVERSITETET. Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

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

INF3100 Databasesystemer

Relasjonsdatabasedesign

Plenum: Nøkler, normalformer og funksjonelle avhengigheter

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

IN2090 Introduksjon til databaser

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Normalisering. Hva er normalisering?

Relasjonsdatabasedesign (forts.)

Relasjonsdatabasedesign

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

IN2090 Databaser og datamodellering. Databasedesign og normalformer

Normalformer utover 4NF (ikke pensum)

Normalisering. Hva er normalisering?

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

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

INF212 - Databaseteori. Kursinnhold

Normalisering. Hva er normalisering?

Databaser. - Normalisering -

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

Relasjonsdatabasedesign (forts.)

INF3100 Databasesystemer

INF1300 Introduksjon til databaser

Oppgaver INF3100. Oversikt over innholdet

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

Oppgaver INF3100. Oversikt over innholdet

Kunnskapsorganisasjon og gjenfinning 1

1. Normalisering Kommentarer til læreboka

UNIVERSITETET I OSLO

Løsningsforslag maskindatabasen på Ifi SQL og normalisering

Databaser: Relasjonsmodellen, del I

Repetisjon: Normalformer og SQL

INF1300 Introduksjon til databaser

Integritetsregler i SQL

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. Primærnøkler

UNIVERSITETET I OSLO

Relasjonsdatabasedesign, ekstramateriale (ikke pensum)

UNIVERSITETET I OSLO

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

1. Relasjonsmodellen Kommentarer til læreboka

Løsningsforslag for Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

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 RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Integritetsregler i SQL

Relasjonsalgebraen. Algebra

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

Oppgave 1 ER- og relasjonsmodell 10 %

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

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

UNIVERSITETET I OSLO

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

Del 1: ER-modellering og databaseteori

INF1300 Introduksjon til databaser

INF3100 V2018 Obligatorisk oppgave nr. 1

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

EKSAMEN DATABASER

Datamodellering 101 En tenkt høgskoledatabase

INF1300 Introduksjon til databaser

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

Oppgave 3 - normalisering

UNIVERSITETET I OSLO

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

Kunnskapsorganisasjon og gjenfinning 1. Relasjonsmodellen og -databaser

SQL Structured Query Language

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

UNIVERSITETET I OSLO

Det matematisk-naturvitenskapelige fakultet

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

INF3100 V2015 Obligatorisk oppgave nr. 1

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

Transkript:

UNIVERSITETET I OSLO INF300 Introduksjon til databaser Dagens tema: Oppdateringsanomalier Normalformer Institutt for informatikk INF300 08..0 michael@ifi.uio.no

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 08..0 michael@ifi.uio.no

Eksempel: Grossistdatabase versjon I (GDB) Produkt(Kode, Produktnavn, Produsent, #Enheter) Bestilling(Kode, Kundenr, Navn, Adresse, #Bestilt) Integritetsregler i tillegg til primærnøklene: A. Verdiene i Navn og Adresse er funksjonelt avhengige av verdien i Kundenr B. Kode i Bestilling er fremmednøkkel til Kode i Produkt INF300 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no 6

Så lite dobbeltlagring som mulig: Plassbehovet minimaliseres Oppdatering forenkles INF300 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no 8

Hvordan unngå dobbeltlagring Splitt (dekomponer) relasjonene slik at dobbeltlagring blir borte! Instanser for de dekomponerte relasjonene fremkommer fra opprinnelig instans ved projeksjon INF300 08..0 michael@ifi.uio.no 9

Eksempel: Grossistdatabase versjon (GDB) 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 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no

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 08..0 michael@ifi.uio.no

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 08..0 michael@ifi.uio.no 3

Eksempel: Grossistdatabase, versjon 3 (GDB3) 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 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no 5

Korrekt totalinformasjon kan gjenskapes nøyaktig ved join: Ingen falske tupler genereres INF300 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no 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 X-attributtene til t. INF300 08..0 michael@ifi.uio.no 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 finnes andre typer integritetsregler.) INF300 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no

Funksjonell avhengighet (repetisjon) Gitt en relasjon R og integritetsregler 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 08..0 michael@ifi.uio.no

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 primærnøkkel, eller mer generelt 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. Hvis R(A,A,...,An) har en primærnøkkel X, betyr det at R har FDen X AA...An. INF300 08..0 michael@ifi.uio.no 3

GDB med integritetsregler Produkt(Kode, Produktnavn, Produsent, #Enheter) Bestilling(Kode, Kundenr, Navn, Adresse, #Bestilt) Integritetsregler:. Kode Produktnavn, Produsent, #Enheter (i Produkt) fordi Kode er primærnøkkel i Produkt. Kode, Kundenr Navn, Adresse, #Bestilt (i Bestilling) fordi (Kode, Kundenr) er primærnøkkel i Bestilling 3. Kundenr Navn, Adresse (i Bestilling) fordi verdiene i Navn og Adresse er funksjonelt avhengige av verdien i Kundenr (integritetsregel A på lysark 3) 4. Kode i Bestilling er fremmednøkkel til Produkt (integritetsregel B på lysark 3) INF300 08..0 michael@ifi.uio.no 4

Normalformer, oversikt NF NF 3NF BCNF INF300 08..0 michael@ifi.uio.no 5

Utgangspunkt for normalformene NF-BCNF Alle integritetsregler er i form av FDer (i tillegg til domeneskranker og fremmednøkler) INF300 08..0 michael@ifi.uio.no 6

Første normalform En relasjon er NF hvis det bare er tillatt med atomære verdier i attributtene INF300 08..0 michael@ifi.uio.no 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 finnes en ikketriviell FD X A hvor A er et ikke-nøkkelattributt og det finnes en kandidatnøkkel W slik at X W (ekte delmengde). INF300 08..0 michael@ifi.uio.no 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 08..0 michael@ifi.uio.no 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 finnes en ikketriviell FD X A hvor A er et ikke-nøkkelattributt og X ikke er en supernøkkel. INF300 08..0 michael@ifi.uio.no 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 fullstendig kandidatnøkkel, og A er et ikke-nøkkelattributt. X A X A INF300 08..0 michael@ifi.uio.no 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 finnes en ikketriviell FD X A hvor X ikke er en supernøkkel. INF300 08..0 michael@ifi.uio.no 3

Brudd på Boyce-Codd, men ikke tredje, normalform FD X A hvor A er et nøkkelattributt og X ikke inneholder en kandidatnøkkel. X A X A X A INF300 08..0 michael@ifi.uio.no 33

Brudd på normalformer i GDB Produkt(Kode, Produktnavn, Produsent, #Enheter) Bestilling(Kode, Kundenr, Navn, Adresse, #Bestilt) FDer:. Kode Produktnavn, Produsent, #Enheter (i Produkt) fordi Kode er primærnøkkel. Kode, Kundenr Navn, Adresse, #Bestilt (i Bestilling) fordi (Kode, Kundenr) er primærnøkkel 3. Kundenr Navn, Adresse (i Bestilling) fordi verdiene i Navn og Adresse er funksjonelt avhengige av verdien i Kundenr (integritetsregel A på lysark 3) Denne bryter NF (se lysark 9), så Bestilling er på NF, men ikke NF. INF300 08..0 michael@ifi.uio.no 34

Normalisering Normalisering går ut på å dekomponere relasjoner med lav normalform til relasjoner med høyere normalform. Regel: Gitt en relasjon R(XYZ) med en FD X Y. Hvis R dekomponeres til S(XY), S(XZ), vil vi aldri kunne få falske tupler ved naturlig join av S og S. Hvis vi dekomponerer R(XYZ) til S(XY), S(XZ) og det ikke er slik at X Y holder, vil vi generelt få falske tupler ved naturlig join av S og S. INF300 08..0 michael@ifi.uio.no 35

Dekomponering av GDB Bruk regelen til å dekomponere GDB (lysark 3): Relasjon: Bestilling(Kode, Kundenr, Navn, Adresse, #Bestilt) FD: Kundenr Navn, Adresse X = {Kundenr} Y = {Navn, Adresse} Z = {Kode, #Bestilt} Da blir resultatet GDB (lysark 0) : Kunde(Kundenr, Navn, Adresse) Ordre(Kode, Kundenr, #Bestilt) I GDB er det ingen brudd på normalformene; alle relasjonene er på BCNF. INF300 08..0 michael@ifi.uio.no 36

Dekomponering av GDB I dekomponeringen av GDB til GDB3 (lysark 4), blir ikke regelen fulgt. Da får vi en database som gir falske tupler, så GDB3 har ikke samme egenskaper som GDB og representerer derfor en annen modell av virksomhetsområdet enn den vi ønsket oss. INF300 08..0 michael@ifi.uio.no 37

Normalisering til 3NF Det lar seg alltid gjøre å normalisere (dekomponere) til 3NF Men hvis en relasjon er på 3NF og ikke på BCNF, betyr det at det finnes noen funksjonelle avhengigheter som må sjekkes ved alle innsettinger og oppdateringer. (I tillegg må selvfølgelig primær- og kandidatnøkler alltid sjekkes) INF300 08..0 michael@ifi.uio.no 38

Normalisering til BCNF Det lar seg alltid gjøre å normalisere (dekomponere) til BCNF Men hvis vi har dekomponert til BCNF, kan det være at vi etterpå har noen funksjonelle avhengigheter som går på tvers av relasjonene. I såfall må vi ved alle innsettinger og oppdateringer joine de involverte relasjonene for å kunne sjekke at de funksjonelle avhengighetene fortsatt er oppfylt. INF300 08..0 michael@ifi.uio.no 39

Normalisering til 3NF vs. BCNF Vi kan alltid normalisere til 3NF uten å få funksjonelle avhengigheter på tvers av relasjonene. Derfor vil man som regel nøye seg med å normalisere bare til 3NF i de tilfellene hvor alternativet er normalisering til BCNF med funksjonelle avhengigheter på tvers. INF300 08..0 michael@ifi.uio.no 40