normalformer or normalisering 1nf, 2nf, 3nf, bcnf · brudd på 2nf i eksemplet fder: 1.bestnr,...
TRANSCRIPT
![Page 1: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/1.jpg)
Normalformer or Normalisering1NF, 2NF, 3NF, BCNF
MartinGiese
7.november2018
�1
![Page 2: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/2.jpg)
Agenda
• Nytteksempel• Medfunksjonelleavhengigheter
• 1NF(veldigkort)• 2NF,Grundig
• Hvaervitsen?–anomalier• Fåeksemplettil2NF• Hvaskjeddemedanomaliene?• Hvordangårdetgenerelt?
• 3NF• BCNF
�2
![Page 3: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/3.jpg)
�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)
![Page 4: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/4.jpg)
�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
![Page 5: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/5.jpg)
�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
![Page 6: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/6.jpg)
Oppdateringsanomalier i eksemplet
• INSERTanomali:• Kanikkestartemeden«tom»bestillingutenetantallprodukter• Kanikkeleggeinnkundeadresseutenbestilling
• UPDATEanomalier:• Endringavkundenienbestillingkreveroppdateringfleresteder• Endringavadressentilenkundekreveroppdateringfleresteder
• DELETEanomali:• Slettingavenpostienbestillingkanmedføreslettingavkundeinformasjon• Slettingavenbestillingkanmedføreslettingavkundeinformasjon
�6
![Page 7: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/7.jpg)
Dekomposisjon
• Dekomposisjonbryternedenrelasjonifleremindrerelasjoner.• Denbryternedentabelleifleretabeller.• Detskalværemuligårekonstruereinnholdetidenopprinneligetabllenfrakomponentene
• Dekomposisjonflyttersekundærinformasjonfraentabelle• Denkanaltsåforhindreoppdateringsanomalier• Ogdermedforbedreetdatabaseskjema
�7
![Page 8: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/8.jpg)
�8
Normalformer
• Normalformereretuttrykkforhvorgodtviharlykkesiendekomposisjon• Johøyerenormalform,jofærreoppdateringsanomalier• Detfinnesalgoritmerforåomformefralaveretilhøyerenormalformer
![Page 9: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/9.jpg)
�9
Utgangspunkt for normalformene 1NF–BCNF
•AlleintegritetsreglereriformavFDer (itilleggtildomeneskrankerogfremmednøkler)
![Page 10: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/10.jpg)
�10
Normalformer, oversikt1NF
2NF
3NF
BCNF
![Page 11: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/11.jpg)
�11
Første normalform
• Definisjon1NF(Codd1972):• Alledomenerbeståravatomæreverdier• Verdienavetgittattributtiettuppelforetgittattributtskalværeenslikatomærverdi(ellernil)
![Page 12: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/12.jpg)
�12
Andre normalform• EnrelasjonRer2NFhvisenhverikketriviellFDX→Atilfredsstillerminstettavfølgendetrekrav:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt• IngenkandidatnøklerinneholderX
"IkketriviellFDX→A"betyratX⊆ RogA∈ R,menA∉X.
![Page 13: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/13.jpg)
Hvordan ser brudd mot 2NF ut?
• AntaatenrelasjonRikkeer2NF.
�13
![Page 14: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/14.jpg)
Hvordan ser brudd mot 2NF ut?
• AntaatenrelasjonRikkeer2NF.• FinnesenikketriviellFDX→Asomikketilfredsstillernoenavdisse:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt• IngenkandidatnøklerinneholderX
�13
![Page 15: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/15.jpg)
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
![Page 16: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/16.jpg)
Hvordan ser brudd mot 2NF ut?
• AntaatenrelasjonRikkeer2NF.• FinnesenikketriviellFDX→Aslikatt• Xinneholderingenkandidatnøkkel,OG• Aerikke-nøkkelattributt,OG• DetfinnesenkandidatnøkkelWsominneholderX,X⊆ W
�14
![Page 17: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/17.jpg)
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
![Page 18: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/18.jpg)
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
![Page 19: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/19.jpg)
Omvendt…
• AntaenikketriviellFDX→Aslikatt• Aerikke-nøkkelattributt• DetfinnesenkandidatnøkkelWsomstrengtinneholderX,X⊂ W
• SidenWerkandidatnøkkeleringendelmengdeavWdet
�15
![Page 20: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/20.jpg)
Omvendt…
• AntaenikketriviellFDX→Aslikatt• Aerikke-nøkkelattributt• DetfinnesenkandidatnøkkelWsomstrengtinneholderX,X⊂ W
• SidenWerkandidatnøkkeleringendelmengdeavWdet• SpesieltinneholderikkeXenkandidatnøkkel.
�15
![Page 21: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/21.jpg)
Omvendt…
• AntaenikketriviellFDX→Aslikatt• Aerikke-nøkkelattributt• DetfinnesenkandidatnøkkelWsomstrengtinneholderX,X⊂ W
• SidenWerkandidatnøkkeleringendelmengdeavWdet• SpesieltinneholderikkeXenkandidatnøkkel.• DetfinnesaltsåenikketriviellFDX→Asomikketilfredsstillernoenavdisse:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt• IngenkandidatnøklerinneholderX
�15
![Page 22: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/22.jpg)
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
![Page 23: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/23.jpg)
�16
Brudd på andre normalformFDX→AhvorXutgjørnoenav,menikkealle,attributteneienavkandidatnøkleneogAeretikke-nøkkelattributt.
Eksempel:
X A
Xerskravert(lyseblått/grått). Kandidatnøklerermarkertmedlyseblått.
![Page 24: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/24.jpg)
�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)
![Page 25: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/25.jpg)
�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.
![Page 26: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/26.jpg)
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
![Page 27: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/27.jpg)
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
![Page 28: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/28.jpg)
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
![Page 29: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/29.jpg)
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
![Page 30: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/30.jpg)
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
![Page 31: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/31.jpg)
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
![Page 32: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/32.jpg)
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
![Page 33: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/33.jpg)
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
![Page 34: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/34.jpg)
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
![Page 35: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/35.jpg)
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
![Page 36: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/36.jpg)
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
![Page 37: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/37.jpg)
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
![Page 38: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/38.jpg)
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
![Page 39: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/39.jpg)
�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)
![Page 40: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/40.jpg)
Anomalier fikset?
BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• INSERTanomali:• Kanstartemeden«tom»bestillingutenetantallprodukter✅ • Kanikkeleggeinnkundeadresseutenbestilling❌
• UPDATEanomalier:• Endringavkundenienbestillingkreveroppdateringettsted✅ • Endringavadressentilenkundekreveroppdateringfleresteder❌
• DELETEanomali:• Slettingavenpostienbestillingkanikkemedføreslettingavkundeinformasjon✅ • Slettingavenbestillingkanmedføreslettingavkundeinformasjon❌
�23
![Page 41: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/41.jpg)
Normalisering til 2NF
• Huskbruddpå2NF:• FDX→AhvorXutgjørnoenav,menikkealle,attributteneienavkandidatnøkleneogAeretikke-nøkkelattributt.
• Observasjon:deterbareendeligmangeikke-nøkkelattributter• Kanvifiksebruddforikke-nøkkelattributterettogett?• Mådasjekkeatdekomponeringikkeførertilnyebrudd…
�24
![Page 42: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/42.jpg)
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
![Page 43: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/43.jpg)
�26
Tredje normalform
• EnrelasjonRer3NFhvisenhverikketriviellFDX→Atilfredsstillerminstettavfølgendetokrav:• Xinneholderenkandidatnøkkel• Aeretnøkkelattributt
• Rbryter3NFhvisdetfinnesenikketriviellFDX→AhvorXikkeinneholdernoenkandidatnøkkelogAeretikke-nøkkelattributt.
![Page 44: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/44.jpg)
�27
Brudd på tredje, men ikke andre, normalformFDX→AhvoringenkandidatnøklerinneholderX,Xikkeinneholdernoenkandidatnøkkel,ogAeretikke-nøkkelattributt.
Eksempler:
X A
X A
![Page 45: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/45.jpg)
�28
Eksempel på brudd mot 3NF
![Page 46: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/46.jpg)
�28
Eksempel på brudd mot 3NF
• Eksempletetternormaliseringtil2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
![Page 47: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/47.jpg)
�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
![Page 48: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/48.jpg)
�29
Videre dekomponering
![Page 49: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/49.jpg)
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
![Page 50: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/50.jpg)
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr
![Page 51: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/51.jpg)
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr Kunde(KundeNr,KundeAdr)
![Page 52: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/52.jpg)
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr Kunde(KundeNr,KundeAdr) BestKunde(BestNr,KundeNr)
![Page 53: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/53.jpg)
�29
Videre dekomponering
• I2NF:BestKunde(BestNr,KundeNr,KundeAdr)BestAnt(BestNr,ProdNr,AntBestilt)
• BrukesammeregelmedKundeNr→KundeAdr Kunde(KundeNr,KundeAdr) BestKunde(BestNr,KundeNr) BestAnt(BestNr,ProdNr,AntBestilt)
![Page 54: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/54.jpg)
�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
![Page 55: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/55.jpg)
�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
![Page 56: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/56.jpg)
�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
![Page 57: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/57.jpg)
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
![Page 58: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/58.jpg)
�31
Boyce-Codd normalform
• EnrelasjonRerBCNFhvisenhverikketriviellFDX→Atilfredsstillerfølgendekrav:• Xinneholderenkandidatnøkkel
• RbryterBCNFhvisdetfinnesenikketriviellFDX→AhvorXikkeinneholdernoenkandidatnøkkel
![Page 59: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/59.jpg)
�32
Brudd på Boyce-Codd, men ikke tredje, normalformFDX→AhvorAeretnøkkelattributtogXikkeinneholdernoenkandidatnøkkel.
Eksempler:
X A
X A
X A
![Page 60: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/60.jpg)
�33
Normalisering til 3NF
• Detlarsegalltidgjøreånormalisere(dekomponere)til3NF• Menhvisenrelasjonerpå3NFogikkepåBCNF,betyrdetatdetkanfinnesnoenfunksjonelleavhengighetersommåsjekkesvedalleinnsettingerogoppdateringer• (Itilleggmåselvfølgeligprimær-ogkandidatnøkleralltidsjekkes)
![Page 61: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/61.jpg)
�34
Normalisering til BCNF • Detlarsegalltidgjøreånormalisere(dekomponere)tilBCNF• MenhvisvihardekomponerttilBCNF,kandetværeatvietterpåharnoenfunksjonelleavhengighetersomgårpåtversavrelasjonene,ogdervivedalleinnsettingerogoppdateringermåjoinedeinvolverterelasjoneneforåkunnesjekkeatdefunksjonelleavhengighetenefortsatteroppfylt.
![Page 62: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/62.jpg)
�35
Normalisering til 3NF vs. BCNF • Vikanalltidnormaliseretil3NFutenåfåfunksjonelleavhengigheterpåtversavrelasjonene.• Derforvilmansomregelnøyesegmedånormaliserebaretil3NFidetilfellenehvoralternativeternormaliseringtilBCNFmedfunksjonelleavhengigheterpåtvers.• Ipraksishardeflesterelasjonerikkesåmangeulikekandidatnøkler.Derforvilrelasjoneri3NFoftealleredeværeiBCNF.
![Page 63: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/63.jpg)
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
![Page 64: Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF · Brudd på 2NF i Eksemplet FDer: 1.BestNr, ProdNr → KundeNr, KundeAdr, AntBestilt fordi (BestNr, ProdNr ) er primærnøkkel i](https://reader036.vdocuments.mx/reader036/viewer/2022062416/6120e92d039529697e0b1b77/html5/thumbnails/64.jpg)
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