Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

LC238D Datamodellering og databaser Else Lervik, oktober 2011 Forelesning 10, uke 42 Normalisering Hva er normalisering?side.

Liknende presentasjoner


Presentasjon om: "LC238D Datamodellering og databaser Else Lervik, oktober 2011 Forelesning 10, uke 42 Normalisering Hva er normalisering?side."— Utskrift av presentasjonen:

1 LC238D Datamodellering og databaser Else Lervik, oktober 2011 Forelesning 10, uke 42 Normalisering Hva er normalisering?side 2 Normaliseringens plass i utviklingsprosessenside 3 Eksempelside 4 Funksjonell avhengighetside 5-6 Første normalform (1NF)side 7 Andre normalform (2NF)side 8-9 Tredje normalform (3NF)side 10 Generelle definisjoner av 2NF og 3NFside Boyce-Codd normalform (BCNF)side Framstillingen avviker noe fra læreboka, der normalisering gjennomgås i kapittel 3.

2 Datamodellering og databaser Else Lervik, oktober 2011 side 2 Hva er normalisering? Normalisering er en formell metode for å designe relasjonsdatabaser Mål: –Å unngå unødvendig dobbeltlagring av data (redundans) pga dobbeltlagring lett fører til inkonsistente data. –Dobbeltlagring er kun nødvendig for å kople tabeller sammen (referanseintegritet, primærnøkkel – fremmednøkkel) Middel: –Dele opp eksisterende tabeller Normaliseringen legger stor vekt på å finne kandidatnøkler. Det stilles formelle krav til sammenhengen mellom attributtene i en tabell. Jo strengere krav, desto høyere normalform. 1NF, 2NF, 3NF, BCNF, 4NF, 5NF,…? 4NF og 5NF kun av teoretisk betydning. Gjennomgås ikke.

3 Datamodellering og databaser Else Lervik, oktober 2011 side 3 Relasjonsmodell basert på EER-diagram Normalisering ”Enda bedre” relasjonsmodell Normaliseringens plass i utviklingsprosessen Som kvalitetssikring: For å forstå en eksisterende database: Et sett med tabeller Klargjør funksjonelle avhengigheter Grunnlag for å lage EER-modell

4 Datamodellering og databaser Else Lervik, oktober 2011 side 4 Har fått følgende dataeksempel til vurdering lev_nrlev_navnstatuslev_byprod_nr, antall 1Svendsen20Lillehammer(1, 300), (2, 200), (3, 400), (4, 200), (5, 100), (6, 100) 2Jensen30Porsgrunn(1, 300), (2, 400) 3Bø30Porsgrunn(2, 400) 4Christiansen20Lillehammer(2, 200) Det er fullt mulig å ta tak i dette via EER-modellering, men vi velger normalisering ettersom dataene allerede er gitt på tabellform. Kan vi bruke denne tabellen i databasen? Skal gjennomgå Codds tre-trinns-prosess (1972) 1NF  2NF  3NF Forutsetter kun én kandidatnøkkel.

5 Datamodellering og databaser Else Lervik, oktober 2011 side 5 Funksjonell avhengighet Gitt en relasjon R med (bl.a.) attributtene X og Y. X og Y kan være sammensatte. Y er funksjonelt avhengig (f.a.) av X hvis og bare hvis det til hver X-verdi er assosiert eksakt en Y-verdi. R.X ---> R.Y Eller: X bestemmer (”determinerer”) Y. X er en determinant. Eks.:leveranse1.lev_nr ---> leveranse1.status leveranse1. lev_nr ---> leveranse1. (lev_navn, status) leveranse1.(lev_nr, lev_navn) ---> leveranse1.lev_by Dersom X er en supernøkkel må alle de øvrige attributtene være funksjonelt avhengig av X. Y er fullt funksjonelt avhengig (f.f.a.) av X, hvis den er funksjonelt avhengig av X, og det ikke fins en delmengde Z av X som Y er funksjonelt avhengig av. Eks.: leveranse1.(lev_nr, lev_navn) ---> leveranse1.lev_by f.a., men ikke f.f.a. leveranse1.(lev_nr) ---> leveranse1.lev_by f.f.a. (og dermed f.a.) Heretter betyr f.a. det samme som f.f.a.

6 Datamodellering og databaser Else Lervik, oktober 2011 side 6 Viser funksjonelle avhengigheter i et diagram prod_nr lev_bystatus antall lev_navn lev_nr Dette er en modell av virkeligheten. Merk at lev_by bestemmer status!

7 Datamodellering og databaser Else Lervik, oktober 2011 side 7 Første normalform (1NF) Tabellen foran ser slik ut på 1NF: lev_nrlev_navnstatuslev_byprod_nrantall 1Svendsen20Lillehammer1300 1Svendsen20Lillehammer2200 1Svendsen20Lillehammer3400 1Svendsen20Lillehammer4200 1Svendsen20Lillehammer5100 1Svendsen20Lillehammer6100 2Jensen30Porsgrunn1300 2Jensen30Porsgrunn2400 3Bø30Porsgrunn2200 4Christiansen20Lillehammer2200 Problemer med oppdatering? Første normalform (1NF): Det eksisterer en primærnøkkel, og ingen del av denne er NULL. Tabellen inneholder ikke repeterende grupper. - Kun én verdi i hver rute i tabellen. Hva er primærnøkkelen?

8 Datamodellering og databaser Else Lervik, oktober 2011 side 8 Andre normalform (2NF) Andre normalform (2NF): En relasjon er på 2NF hvis og bare hvis den er på 1NF, og den ikke inneholder partielle avhengigheter (en ikke- nøkkel-attributt er f.a. av en del av primærnøkkelen). Fra 1NF til 2NF: Splitt opp relasjonen i flere nye relasjoner slik at partielle avhengigheter unngås. (”Ingen piler krysser bokser”) prod_nr lev_by status antall lev_navn lev_nr

9 Datamodellering og databaser Else Lervik, oktober 2011 side 9 Splitter 1NF-tabellen i to Splitter ved å foreta en projeksjon. En naturlig forening bringer relasjonene tilbake til utgangspunktet. De nye tabellene kan inneholde mer informasjon enn de opprinnelige, men ikke mindre. lev_nrlev_navnstatuslev_by 1Svendsen20Lillehammer 2Jensen30Porsgrunn 3Bø30Porsgrunn 4Christiansen20Lillehammer lev_nrprod_nrantall Problemer med oppdatering? Hva er primærnøklene i disse to tabellene?

10 Datamodellering og databaser Else Lervik, oktober 2011 side 10 Tredje normalform (3NF) Fra 2NF til 3NF: Transitive avhengigheter fjernes. Transitiv avhengighet: –lev_nr  lev_by  status, det vil si lev_nr  status Tredje normalform (3NF): En relasjon er på 3NF, hvis og bare hvis den er på 2NF, og den ikke inneholder transitive avhengigheter. (”Alle piler utgår fra primærnøkkelen.”) lev_nrlev_navnlev_by 1SvendsenLillehammer 2JensenPorsgrunn 3BøPorsgrunn 4ChristiansenLillehammer lev_by lev_nr lev_bystatus lev_navn lev_bystatus Lillehammer20 Porsgrunn30 Problemer med oppdatering? Hva er primærnøklene i disse to tabellene?

11 Datamodellering og databaser Else Lervik, oktober 2011 side 11 Generelle definisjoner av 2NF og 3NF Hva hvis flere kandidatnøkler? 2NF –En relasjon er på 2NF hvis og bare hvis den er på 1NF, og den ikke inneholder partielle avhengigheter (en ikke-nøkkel-attributt er f.a. av en del av en kandidatnøkkel). 3NF –En relasjon er på 3NF, hvis og bare hvis den er på 2NF, og den ikke inneholder transitive avhengigheter, dvs at det ikke fins ikke- nøkkelattributter som er funksjonelt avhengig av andre ikke- nøkkelattributter.

12 Datamodellering og databaser Else Lervik, oktober 2011 side 12 Eksempel med flere kandidatnøkler Anta at også lev_navn entydig identifiserer en leverandør. Ellers noe forenklet: prod_nr antall lev_navn lev_nr To kandidatnøkler: (lev_nr, prod_nr) (lev_navn, prod_nr) Sjekk mot de generelle definisjonene av 2NF og 3NF

13 Datamodellering og databaser Else Lervik, oktober 2011 side 13 Eksempel med flere kandidatnøkler, forts prod_nr antall lev_navn lev_nr lev_navnprod_nrantall 1Svendsen1300 1Svendsen2200 1Svendsen3400 1Svendsen4200 1Svendsen5100 1Svendsen6100 2Jensen1300 2Jensen2400 3Bø2200 4Christiansen2200 Problemer med oppdatering?

14 Datamodellering og databaser Else Lervik, oktober 2011 side 14 Boyce-Codd normalform (BCNF) Boyce-Codd normalform (BCNF): En relasjon tilfredsstiller BCNF hvis enhver determinant er en kandidatnøkkel. Hvis en tabell har bare én kandidatnøkkel, er 3NF og BCNF ekvivalente. prod_nr antall lev_navn lev_nr To kandidatnøkler: (lev_nr, prod_nr) (lev_navn, prod_nr) Er BCNF oppfylt?

15 Datamodellering og databaser Else Lervik, oktober 2011 side 15 Splitter slik at BCNF er tilfredsstillt lev_nrlev_navn 1Svendsen 2Jensen 3Bø 4Christiansen lev_nrprod_nrantall Konklusjon: Unødvendig å gå gjennom 1NF  2NF  3NF  prosessen. I praktisk arbeid er det nok å sjekke at BCNF er oppfylt. BCNF kan også brukes dersom de tre kravene midt på side 93 i læreboka ikke er oppfylt. Kandidatnøkler i disse tabellene?


Laste ned ppt "LC238D Datamodellering og databaser Else Lervik, oktober 2011 Forelesning 10, uke 42 Normalisering Hva er normalisering?side."

Liknende presentasjoner


Annonser fra Google