Fjerde normalform.pdf
Fjerde normalform.pdf
Fjerde normalform.pdf
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
TDT4145 Datamodellering og databasesystemer <br />
Litt om fjerde <strong>normalform</strong> <br />
Ta utgangspunkt i en litt forenklet utgave av Canons kameraunivers; der det finnes et <br />
antall kameramodeller som kan bruke et antall objektiver og et antall blitser. Vi antar <br />
at Canon har kameramodellene 1D og 7D, de har blitsene 320, 400 og 580, og de har <br />
objektivene 24 mm, 35 mm, 50 mm og 85 mm. Tabellen kompatibilitet under viser <br />
hvilke kombinasjoner av kamera, objektiver og blitser som fungerer. <br />
Kamera Objektiv Blits <br />
1D 24 mm 320 <br />
1D 35 mm 320 <br />
1D 50 mm 320 <br />
1D 85 mm 320 <br />
1D 24 mm 400 <br />
1D 35 mm 400 <br />
1D 50 mm 400 <br />
1D 85 mm 400 <br />
1D 24 mm 580 <br />
1D 35 mm 580 <br />
1D 50 mm 580 <br />
1D 85 mm 580 <br />
7D 24 mm 320 <br />
7D 35 mm 320 <br />
7D 50 mm 320 <br />
7D 85 mm 320 <br />
7D 24 mm 400 <br />
7D 35 mm 400 <br />
7D 50 mm 400 <br />
7D 85 mm 400 <br />
7D 24 mm 580 <br />
7D 35 mm 580 <br />
7D 50 mm 580 <br />
7D 85 mm 580 <br />
Side 1 av 3
I tabellen kompatibilitet er det ingen funksjonelle avhengigheter som gjelder og alle <br />
attributtene inngår derfor i primærnøkkelen som er den eneste supernøkkelen for <br />
tabellen. Tabellen er på Boyce-‐Codd <strong>normalform</strong>, men har likevel en del uønskede <br />
egenskaper på samme måte som vi tidligere har sett med tabeller på 1. <strong>normalform</strong> <br />
eller 2. <strong>normalform</strong>. Ved innsetting av et nytt objektiv, for eksempel en 135 mm som <br />
kan benyttes med alle kamera-‐ og blitskombinasjoner, må vi sette inn 6 nye rader i <br />
tabellen over. <br />
Det avgjørende spørsmålet i forhold til 4. <strong>normalform</strong> er om sammenhengen mellom <br />
kamera og blitser er avhengig av objektiver eller ikke (og tilsvarende om <br />
sammenhengen mellom kamera og objektiver er uavhengig av blitser). <br />
Dersom de blitsene som kan brukes med et kamera, er uavhengig av de objektivene <br />
som kan brukes på kameraet, vil vi ha to (ikke-‐trivielle) flerverdi-‐avhengigheter (mvd <br />
– multi value dependency): <br />
kamera -‐>> objektiv og kamera -‐>> blits <br />
I et slikt tilfelle vil tabellen kompatibilitet alltid inneholde alle kombinasjoner av <br />
kamera, objektiv og blits, for objektiver og blitser som passer på et bestemt kamera. <br />
Tabellen vil potensielt ha mye redundans, og den vil ikke være på 4. <strong>normalform</strong>. I et <br />
slikt tilfelle vil det være gunstig å dekomponere tabellen i komponentene <br />
objektiver(kamera, objektiv) og blitser(kamera, blits) <br />
som begge vil være på 4. <strong>normalform</strong>. Under har vi vist hvordan forekomstene av <br />
disse vil se ut med utgangspunkt i kompabilitet-‐tabellen på forrige side. <br />
Kamera <br />
1D <br />
1D <br />
1D <br />
1D <br />
7D <br />
7D <br />
7D <br />
7D <br />
Objektiv <br />
24 mm <br />
35 mm <br />
50 mm <br />
85 mm <br />
24 mm <br />
35 mm <br />
50 mm <br />
85 mm <br />
Side 2 av 3
Kamera <br />
1D <br />
1D <br />
1D <br />
7D <br />
7D <br />
7D <br />
Blits <br />
320 <br />
400 <br />
580 <br />
320 <br />
400 <br />
580 <br />
På grunn av de to flerverdi-‐avhengighetene vil de to tabellene alltid kunne joines <br />
tapsløst sammen til utgangspunktet. <br />
Dersom det derimot er slik at det kan finnes objektiv-‐blits-‐kombinasjoner som ikke <br />
fungerer for et kamera, selv om kameraet kan bruke både objektivet og blitsen, vil vi <br />
ikke ha flerverdi-‐avhengighetene kamera -‐>> objektiv og kamera -‐>> blits. I et slikt <br />
tilfelle vil tabellen kompatibilitet være på 4. <strong>normalform</strong>. Vi kan heller ikke <br />
dekomponere tabellen i de to komponenttabellene (kamera-‐objektiv og kamera-blits)<br />
og ha tapsløst-‐join-‐egenskapen. <br />
Øvingsoppgave <br />
Ta utgangspunkt i tabellen Pensum(Emne, Bok, Lærer) som viser hvilke bok-‐lærer-emne-‐kombinasjoner<br />
som gjelder. For vårt emne vil vi for eksempel ha radene <br />
og . <br />
Under hvilke forutsetninger vil det være hensiktsmessig å dekomponere denne <br />
tabellen i komponentene EmnePensum(Emne, Bok) og EmneLærer(Emne, Lærer)? <br />
Roger Midtstraum, 6. mars 2012 <br />
Side 3 av 3