Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
Normalformer or Normalisering1NF, 2NF, 3NF, BCNF
MartinGiese
7.november2018
�1
Agenda
• Nytteksempel• Medfunksjonelleavhengigheter
• 1NF(veldigkort)• 2NF,Grundig
• Hvaervitsen?–anomalier• Fåeksemplettil2NF• Hvaskjeddemedanomaliene?• Hvordangårdetgenerelt?
• 3NF• BCNF
�2
�3
Eksempel: Bestillinger
Integritetsregler:1. BestNr,ProdNr→ KundeNr,KundeAdr,AntBestiltfordi(BestNr,ProdNr)erprimærnøkkeliBestilling
2. BestNr→KundeNr:helebestillingforsammekunde3. KundeNr→KundeAdr:kundeharkunenadresse4. BestNr→KundeAdr:konsekvensav2og3
5. ProdNrogKundeNrerfremmednøklerforandrerelasjoner
Bestilling(BestNr,ProdNr,KundeNr,KundeAdr,AntBestilt)
�4
Eksempeldata
Bestilling(BestNr,ProdNr,KundeNr,KundeAdr,AntBestilt)
BestNr ProdNr KundeNr KundeAdr AntBestilt1 111 A Askim 102 222 B Bærum 202 202 B Bærum 153 111 A Askim 503 202 A Askim 10
�5
Sekundærinformasjon
Bestilling(BestNr,ProdNr,KundeNr,KundeAdr,AntBestilt)
BestNr ProdNr KundeNr KundeAdr AntBestilt1 111 A Askim 102 222 B Bærum 202 202 B Bærum 153 111 A Askim 503 202 A Askim 10
Sekundærinformasjon
Oppdateringsanomalier i eksemplet
• INSERTanomali:• Kanikkestartemeden«tom»bestillingutenetantallprodukter• Kanikkeleggeinnkundeadresseutenbestilling
• UPDATEanomalier:• Endringavkundenienbestillingkreveroppdateringfleresteder• Endringavadressentilenkundekreveroppdateringfleresteder
• DELETEanomali:• Slettingavenpostienbestillingkanmedføreslettingavkundeinformasjon• Slettingavenbestillingkanmedføreslettingavkundeinformasjon
�6
Dekomposisjon
• Dekomposisjonbryternedenrelasjonifleremindrerelasjoner.• Denbryternedentabelleifleretabeller.• Detskalværemuligårekonstruereinnholdetidenopprinneligetabllenfrakomponentene
• Dekomposisjonflyttersekundærinformasjonfraentabelle• Denkanaltsåforhindreoppdateringsanomalier• Ogdermedforbedreetdatabaseskjema
�7
�8
Normalformer
• Normalformereretuttrykkforhvorgodtviharlykkesiendekomposisjon• Johøyerenormalform,jofærreoppdateringsanomalier• Detfinnesalgoritmerforåomformefralaveretilhøyerenormalformer
�9
Utgangspunkt for normalformene 1NF–BCNF
•AlleintegritetsreglereriformavFDer (itilleggtildomeneskrankerogfremmednøkler)
�10
Normalformer, oversikt1NF
2NF
3NF
BCNF
�11
Første normalform
• Definisjon1NF(Codd1972):• Alledomenerbeståravatomæreverdier• Verdienavetgittattributtiettuppelforetgittattributtskalværeenslikatomærverdi(ellernil)
�12
Andre normalform• EnrelasjonRer2NFhvisenhverikketriviellFDX→Atilfredsstillerminstettavfølgendetrekrav:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt• IngenkandidatnøklerinneholderX
"IkketriviellFDX→A"betyratX⊆ RogA∈ R,menA∉X.
Hvordan ser brudd mot 2NF ut?
• AntaatenrelasjonRikkeer2NF.
�13
Hvordan ser brudd mot 2NF ut?
• AntaatenrelasjonRikkeer2NF.• FinnesenikketriviellFDX→Asomikketilfredsstillernoenavdisse:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt• IngenkandidatnøklerinneholderX
�13
Hvordan ser brudd mot 2NF ut?
• AntaatenrelasjonRikkeer2NF.• FinnesenikketriviellFDX→Asomikketilfredsstillernoenavdisse:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt• IngenkandidatnøklerinneholderX
• FinnesenikketriviellFDX→Aslikatt• Xinneholderingenkandidatnøkkel,OG• Aerikke-nøkkelattributt,OG• DetfinnesenkandidatnøkkelWsominneholderX,X⊆ W
�13
Hvordan ser brudd mot 2NF ut?
• AntaatenrelasjonRikkeer2NF.• FinnesenikketriviellFDX→Aslikatt• Xinneholderingenkandidatnøkkel,OG• Aerikke-nøkkelattributt,OG• DetfinnesenkandidatnøkkelWsominneholderX,X⊆ W
�14
Hvordan ser brudd mot 2NF ut?
• AntaatenrelasjonRikkeer2NF.• FinnesenikketriviellFDX→Aslikatt• Xinneholderingenkandidatnøkkel,OG• Aerikke-nøkkelattributt,OG• DetfinnesenkandidatnøkkelWsominneholderX,X⊆ W
• FinnesenikketriviellFDX→Aslikatt• Aerikke-nøkkelattributt,• DetfinnesenkandidatnøkkelWsomstrengtinneholderX,X⊂ W
�14
Hvordan ser brudd mot 2NF ut?
• AntaatenrelasjonRikkeer2NF.• FinnesenikketriviellFDX→Aslikatt• Xinneholderingenkandidatnøkkel,OG• Aerikke-nøkkelattributt,OG• DetfinnesenkandidatnøkkelWsominneholderX,X⊆ W
• FinnesenikketriviellFDX→Aslikatt• Aerikke-nøkkelattributt,• DetfinnesenkandidatnøkkelWsomstrengtinneholderX,X⊂ W• (medX=WhaddeXværtkandidatnøkkel)
�14
Omvendt…
• AntaenikketriviellFDX→Aslikatt• Aerikke-nøkkelattributt• DetfinnesenkandidatnøkkelWsomstrengtinneholderX,X⊂ W
• SidenWerkandidatnøkkeleringendelmengdeavWdet
�15
Omvendt…
• AntaenikketriviellFDX→Aslikatt• Aerikke-nøkkelattributt• DetfinnesenkandidatnøkkelWsomstrengtinneholderX,X⊂ W
• SidenWerkandidatnøkkeleringendelmengdeavWdet• SpesieltinneholderikkeXenkandidatnøkkel.
�15
Omvendt…
• AntaenikketriviellFDX→Aslikatt• Aerikke-nøkkelattributt• DetfinnesenkandidatnøkkelWsomstrengtinneholderX,X⊂ W
• SidenWerkandidatnøkkeleringendelmengdeavWdet• SpesieltinneholderikkeXenkandidatnøkkel.• DetfinnesaltsåenikketriviellFDX→Asomikketilfredsstillernoenavdisse:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt• IngenkandidatnøklerinneholderX
�15
Omvendt…
• AntaenikketriviellFDX→Aslikatt• Aerikke-nøkkelattributt• DetfinnesenkandidatnøkkelWsomstrengtinneholderX,X⊂ W
• SidenWerkandidatnøkkeleringendelmengdeavWdet• SpesieltinneholderikkeXenkandidatnøkkel.• DetfinnesaltsåenikketriviellFDX→Asomikketilfredsstillernoenavdisse:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt• IngenkandidatnøklerinneholderX
• Derforerikkerelasjoneni2NF.
�15
�16
Brudd på andre normalformFDX→AhvorXutgjørnoenav,menikkealle,attributteneienavkandidatnøkleneogAeretikke-nøkkelattributt.
Eksempel:
X A
Xerskravert(lyseblått/grått). Kandidatnøklerermarkertmedlyseblått.
�17
Brudd på 2NF i Eksemplet
FDer:1. BestNr,ProdNr→ KundeNr,KundeAdr,AntBestiltfordi(BestNr,ProdNr)erprimærnøkkeliBestilling
2. BestNr→KundeNr:helebestillingforsammekunde Bruddpå2NF!
3. KundeNr→KundeAdr:kundeharkunenadresse4. BestNr→KundeAdr:konsekvensav2og3 Bruddpå2NF!
Bestilling(BestNr,ProdNr,KundeNr,KundeAdr,AntBestilt)
�18
Normalisering• Normaliseringgårutpåådekomponererelasjonermedlavnormalformtilrelasjonermedhøyerenormalform.• Regel:GittenrelasjonR(XYZ)medenFDX→Y. HvisRdekomponerestilS(XY),T(XZ),vilvialdrikunnefåfalsketuplervednaturligjoinavSogT.• HvisvidekomponererR(XYZ)tilS(XY),T(XZ)ogdetikkeerslikatX→Yholder,vilvigenereltfåfalsketuplervednaturligjoinavSogT.
HeruttrykkerR(XYZ)atattributteneiRkandelesinnitre(ikketomme)disjunktemengderX,YogZ.
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
�19
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoinbevareralletupleriR:• R(X,Y,Z)⊇S(X,Y)⨝T(X,Z)
�19
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoinbevareralletupleriR:• R(X,Y,Z)⊇S(X,Y)⨝T(X,Z)
• La<x,y,z>∈R(X,Y,Z)
�19
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoinbevareralletupleriR:• R(X,Y,Z)⊇S(X,Y)⨝T(X,Z)
• La<x,y,z>∈R(X,Y,Z)• Daer<x,y>∈S(X,Y)og<x,z>∈T(X,Z)
�19
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoinbevareralletupleriR:• R(X,Y,Z)⊇S(X,Y)⨝T(X,Z)
• La<x,y,z>∈R(X,Y,Z)• Daer<x,y>∈S(X,Y)og<x,z>∈T(X,Z)• NaturligjoinbrukerXsomjoinattributt
�19
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoinbevareralletupleriR:• R(X,Y,Z)⊇S(X,Y)⨝T(X,Z)
• La<x,y,z>∈R(X,Y,Z)• Daer<x,y>∈S(X,Y)og<x,z>∈T(X,Z)• NaturligjoinbrukerXsomjoinattributt• Så<x,y,z>∈S(X,Y)⨝T(X,Z)
�19
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoingirikkefleretuplerennR:• R(X,Y,Z)⊆S(X,Y)⨝T(X,Z)
�20
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoingirikkefleretuplerennR:• R(X,Y,Z)⊆S(X,Y)⨝T(X,Z)
• La<x,y,z>∈S(X,Y)⨝T(X,Z)
�20
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoingirikkefleretuplerennR:• R(X,Y,Z)⊆S(X,Y)⨝T(X,Z)
• La<x,y,z>∈S(X,Y)⨝T(X,Z)• Daer<x,y>∈S(X,Y)og<x,z>∈T(X,Z)
�20
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoingirikkefleretuplerennR:• R(X,Y,Z)⊆S(X,Y)⨝T(X,Z)
• La<x,y,z>∈S(X,Y)⨝T(X,Z)• Daer<x,y>∈S(X,Y)og<x,z>∈T(X,Z)• Dafinnesyʹogzʹmed<x,y,zʹ>∈R(X,Y,Z)ogmed<x,yʹ,z>∈R(X,Y,Z)
�20
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoingirikkefleretuplerennR:• R(X,Y,Z)⊆S(X,Y)⨝T(X,Z)
• La<x,y,z>∈S(X,Y)⨝T(X,Z)• Daer<x,y>∈S(X,Y)og<x,z>∈T(X,Z)• Dafinnesyʹogzʹmed<x,y,zʹ>∈R(X,Y,Z)ogmed<x,yʹ,z>∈R(X,Y,Z)• HuskFDX→Y:likXmedførerlikY:y=yʹ!
�20
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoingirikkefleretuplerennR:• R(X,Y,Z)⊆S(X,Y)⨝T(X,Z)
• La<x,y,z>∈S(X,Y)⨝T(X,Z)• Daer<x,y>∈S(X,Y)og<x,z>∈T(X,Z)• Dafinnesyʹogzʹmed<x,y,zʹ>∈R(X,Y,Z)ogmed<x,yʹ,z>∈R(X,Y,Z)• HuskFDX→Y:likXmedførerlikY:y=yʹ!• Dermed:<x,y,z>∈R(X,Y,Z)
�20
Hvorfor?
• GittR(X,Y,Z)medFDX→Y,ogprojeksjonerS(X,Y),T(X,Z)• <x,y>∈S(X,Y)hvisogbarehvis∃zʹmed<x,y,zʹ>∈R(X,Y,Z)• <x,z>∈T(X,Z)hvisogbarehvis∃yʹmed<x,yʹ,z>∈R(X,Y,Z)
• NaturligjoingirnøyaktigdesammetuplenesomR:• R(X,Y,Z)=S(X,Y)⨝T(X,Z)
�21
�22
Bruk av regelen på Eksemplet
FD:• BestNr→ KundeNr• S(BestNr,KundeNr),T(BestNr,ProdNr,KundeAdr,AntBestilt)• BstKnd(BestNr,KundeNr),Best(BestNr,ProdNr,KundeAdr…)
• BestNr→ KundeAdr• BstKnd(BestNr,KundeAdr),Best(…,KundeNr,AntBestilt)
• BestNr→ KundeNr,KundeAdr• BestKunde(BestNr,KundeNr,KundeAdr)• BestAnt(BestNr,ProdNr,AntBestilt)
Bestilling(BestNr,ProdNr,KundeNr,KundeAdr,AntBestilt)
Anomalier fikset?
BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• INSERTanomali:• Kanstartemeden«tom»bestillingutenetantallprodukter✅ • Kanikkeleggeinnkundeadresseutenbestilling❌
• UPDATEanomalier:• Endringavkundenienbestillingkreveroppdateringettsted✅ • Endringavadressentilenkundekreveroppdateringfleresteder❌
• DELETEanomali:• Slettingavenpostienbestillingkanikkemedføreslettingavkundeinformasjon✅ • Slettingavenbestillingkanmedføreslettingavkundeinformasjon❌
�23
Normalisering til 2NF
• Huskbruddpå2NF:• FDX→AhvorXutgjørnoenav,menikkealle,attributteneienavkandidatnøkleneogAeretikke-nøkkelattributt.
• Observasjon:deterbareendeligmangeikke-nøkkelattributter• Kanvifiksebruddforikke-nøkkelattributterettogett?• Mådasjekkeatdekomponeringikkeførertilnyebrudd…
�24
Normalisering til 2NF (forts.)
• LaX→Aværeetbruddmot2NF:• FDX→AhvorXutgjørnoenav,menikkealle,attributteneienavkandidatnøkleneogAeretikke-nøkkelattributt.
• Men«minimalt»,altsåikkeXʹ→AforXʹ⊂ X• R(W,X,A,Y)medkandidatnøkkelWX,ogminimalFDX→A• DekomponertilS(X,A)ogT(W,X,Y)etterregelen
• Sernåi2NF,sidenXerkandidatnøkkelforS.• TinneholderikkelengerA,fortsettmedflerebruddforandreikke-nøkkelattributteriY
�25
�26
Tredje normalform
• EnrelasjonRer3NFhvisenhverikketriviellFDX→Atilfredsstillerminstettavfølgendetokrav:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt
• Rbryter3NFhvisdetfinnesenikketriviellFDX→AhvorXikkeinneholdernoenkandidatnøkkelogAeretikke-nøkkelattributt.
�27
Brudd på tredje, men ikke andre, normalformFDX→AhvoringenkandidatnøklerinneholderX,Xikkeinneholdernoenkandidatnøkkel,ogAeretikke-nøkkelattributt.
Eksempler:
X A
X A
�28
Eksempel på brudd mot 3NF
�28
Eksempel på brudd mot 3NF
• Eksempletetternormaliseringtil2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
�28
Eksempel på brudd mot 3NF
• Eksempletetternormaliseringtil2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• FortsattFDKundeNr→KundeAdriBestKunde!• Ikkebruddmot2NF• Ikketriviell,KundeAdrerikke-nøkkelattributt,ingenkandidatnøklerinneholderAdresse.• Bruddmot3NF
�29
Videre dekomponering
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr Kunde(KundeNr,KundeAdr)
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr Kunde(KundeNr,KundeAdr) BestKunde(BestNr,KundeNr)
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr Kunde(KundeNr,KundeAdr) BestKunde(BestNr,KundeNr) BestAnt(BestNr,ProdNr,AntBestilt)
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr Kunde(KundeNr,KundeAdr) BestKunde(BestNr,KundeNr) BestAnt(BestNr,ProdNr,AntBestilt)
• Denneeri3NF
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr Kunde(KundeNr,KundeAdr) BestKunde(BestNr,KundeNr) BestAnt(BestNr,ProdNr,AntBestilt)
• Denneeri3NF
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr Kunde(KundeNr,KundeAdr) BestKunde(BestNr,KundeNr) BestAnt(BestNr,ProdNr,AntBestilt)
• Denneeri3NF
Anomalier fikset?
Kunde(KundeNr,KundeAdr) BestKunde(BestNr,KundeNr) BestAnt(BestNr,ProdNr,AntBestilt)
• INSERTanomali:• Kanstartemeden«tom»bestillingutenetantallprodukter✅ • Kanleggeinnkundeadresseutenbestilling✅
• UPDATEanomalier:• Endringavkundenienbestillingkreveroppdateringettsted✅ • Endringavadressentilenkundekreveroppdateringettsted✅
• DELETEanomali:• Slettingavenpostienbestillingkanikkemedføreslettingavkundeinformasjon✅ • Slettingavenbestillingkanikkemedføreslettingavkundeinformasjon✅
�30
�31
Boyce-Codd normalform
• EnrelasjonRerBCNFhvisenhverikketriviellFDX→Atilfredsstillerfølgendekrav:• Xinneholderenkandidatnøkkel
• RbryterBCNFhvisdetfinnesenikketriviellFDX→AhvorXikkeinneholdernoenkandidatnøkkel
�32
Brudd på Boyce-Codd, men ikke tredje, normalformFDX→AhvorAeretnøkkelattributtogXikkeinneholdernoenkandidatnøkkel.
Eksempler:
X A
X A
X A
�33
Normalisering til 3NF
• Detlarsegalltidgjøreånormalisere(dekomponere)til3NF• Menhvisenrelasjonerpå3NFogikkepåBCNF,betyrdetatdetkanfinnesnoenfunksjonelleavhengighetersommåsjekkesvedalleinnsettingerogoppdateringer• (Itilleggmåselvfølgeligprimær-ogkandidatnøkleralltidsjekkes)
�34
Normalisering til BCNF • Detlarsegalltidgjøreånormalisere(dekomponere)tilBCNF• MenhvisvihardekomponerttilBCNF,kandetværeatvietterpåharnoenfunksjonelleavhengighetersomgårpåtversavrelasjonene,ogdervivedalleinnsettingerogoppdateringermåjoinedeinvolverterelasjoneneforåkunnesjekkeatdefunksjonelleavhengighetenefortsatteroppfylt.
�35
Normalisering til 3NF vs. BCNF • Vikanalltidnormaliseretil3NFutenåfåfunksjonelleavhengigheterpåtversavrelasjonene.• Derforvilmansomregelnøyesegmedånormaliserebaretil3NFidetilfellenehvoralternativeternormaliseringtilBCNFmedfunksjonelleavhengigheterpåtvers.• Ipraksishardeflesterelasjonerikkesåmangeulikekandidatnøkler.Derforvilrelasjoneri3NFoftealleredeværeiBCNF.
NormalformerGittenrelasjonR,medetsettFD-erpåformenX→ A,derXogAeretsettavattributter
1NF:• Rinneholderkunatomæreverdier/attributter2NF:• XerensupernøkkeliR,eller• Aeretnøkkelattributt,eller• XerikkeendelmengdeavnoennøkleriR3NF:• XerensupernøkkeliR,eller• AeretnøkkelattributtBCNF:• XerensupernøkkeliR
1NF
2NF
3NF
BCNF
Ikke-normalisertlagring
�36
ViharFD-en X→A
ErXensupernøkkel?
Nei:X→AbryterBCNF
Ja:X→AoppfyllerBCNF
ErAetnøkkel-attributt?
Ja:X→AbryterBCNF,men
oppfyller3NF
Nei:X→Abryter3NF
ErXendelmengdeavennøkkel?
Nei:X→Abryter3NF, menoppfyller2NF
Ja:X→Abryter2NF, menoppfyller1NF
1NF:Bareatomæreverdier/attributter2NF:XerensupernøkkeliR,ellerAeretnøkkelattributt,ellerXerikkeendelmengdeavnoennøkleriR3NF:XerensupernøkkeliR,ellerAeretnøkkelattributtBCNF:XerensupernøkkeliR
�37