1 / 15

Normalisering

Normalisering. Hva er normalisering? side 2 Normaliseringens plass i utviklingsprosessen side 3 Eksempel side 4 Funksjonell avhengighet side 5-6 Første normalform (1NF) side 7 Andre normalform (2NF) side 8-9

omar-carr
Download Presentation

Normalisering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Normalisering Hva er normalisering? side 2Normaliseringens plass i utviklingsprosessen side 3 Eksempel side 4 Funksjonell avhengighet side 5-6 Første normalform (1NF) side 7 Andre normalform (2NF) side 8-9 Tredje normalform (3NF) side 10Generelle definisjoner av 2NF og 3NF side 11-13 Boyce-Codd normalform (BCNF) side 13-15 Framstillingen avviker noe fra læreboka, der normalisering gjennomgås i kapittel 3.

  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. Datamodellering og databaserElse Lervik, oktober 2011

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

  4. Har fått følgende dataeksempel til vurdering 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. Datamodellering og databaserElse Lervik, oktober 2011

  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. Datamodellering og databaserElse Lervik, oktober 2011

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

  7. Første normalform (1NF) 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. Tabellen foran ser slik ut på 1NF: Hva er primærnøkkelen? Problemer med oppdatering? Datamodellering og databaserElse Lervik, oktober 2011

  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”) lev_by lev_nr lev_nr antall status lev_navn prod_nr Datamodellering og databaserElse Lervik, oktober 2011

  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. Hva er primærnøklene i disse to tabellene? Problemer med oppdatering? Datamodellering og databaserElse Lervik, oktober 2011

  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_by lev_by status lev_nr lev_navn Hva er primærnøklene i disse to tabellene? Problemer med oppdatering? Datamodellering og databaserElse Lervik, oktober 2011

  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. Datamodellering og databaserElse Lervik, oktober 2011

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

  13. Eksempel med flere kandidatnøkler, forts lev_navn lev_nr prod_nr antall Problemer med oppdatering? Datamodellering og databaserElse Lervik, oktober 2011

  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. To kandidatnøkler: (lev_nr, prod_nr)(lev_navn, prod_nr) lev_navn lev_nr prod_nr Er BCNF oppfylt? antall Datamodellering og databaserElse Lervik, oktober 2011

  15. Splitter slik at BCNF er tilfredsstillt Kandidatnøkler i disse tabellene? 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. Datamodellering og databaserElse Lervik, oktober 2011

More Related