K5.1 Determinering
Determinering = avhengighet
- A determinerer B
- Verdien av A bestemmer verdien av B
- B avhenger av A
— personnr determinerer navn
— navn avhenger av personnr
— bilnr bestemmer biltype
— flynr determinerer land
Definisjon: At attributt (kombinasjon) A determinerer attributt (kombinasjon) B, vil si at hvis vi har gitt en verdi av A, så bestemmer den også en eneste verdi av B.
Dette noteres A —> B
K5.2 1te normalform
Hvert attributt kan bare inneholde én verdi.
Problem:
- Det finnes attributt(er) som mangler determinering
- Det finnes attributt(er) som inneholder flere verdier
Løsning:
- Hver verdi må få en egen rad — fører til ny nøkkel
- Tabellen splittes i to tabeller
K5.3 2dre normalform
Hvert attributt som ikke er primærnøkkel er bestemt av hele primærnøkkelen.
Problem:
- Data blir dobbeltlagret (redundans)
- Data kan bli selvmotsigende (inkonsistens)
- Data kan ikke registreres
- Vanskelig å oppdatere
- Det finnes attributt(er) som bestemmes av deler av primærnøkkelen (ikke hele)
Løsning:
- Attributter som danner en gruppe splittes ut i egen tabell
- De(t) attributt(er) dette gjelder splittes ut i egen tabell sammen med angjeldende del av primærnøkkelen.
K5.4 3dje normalform
Ingen attributter bestemmes av andre attributter som ikke er primærnøkkel
Problem:
- Dobbeltlagring av data
- Mulig inkonsistens
Løsning:
- Splitte ut i egen tabell aktuell(e) attributt(er) og determinant
K5.5 Kandidatnøkkel
En kandidatnøkkel er et attributt eller en attributtkombinasjon som er entydig. Hvis det er en kombinasjon, skal det ikke lenger være entydighet hvis vi fjerner ett attributt.
Eksempler:
- Ansattnummer, Personnummer
- Bilnr, Chassisnr
- Avdelingsnr, Avdelingsnavn
K5.6 Kontraeksempler
Skinneksempler — ikke normalisert:
- fødselsår —> klassetrinn NEI!
kan se riktig ut
- VARE: Varenr —> stkpris
ORDRELINJE: Varenr, stkpris
prisen kan forandres, både i VARE (tid...) og i ORDRELINJE (rabatt...)
OBS! Kontrollér de faktiske forhold!
K5.7 Hovedregel for normalisering
Primærnøkkelen og andre kandidatnøkler må determinere alle andre felt, og det må ikke finnes andre determineringer.
=Boyce-Codds normalform
K5.8 Gode råd
- Vær nøye med datamodelleringen, og bruk normalisering som en kontroll.
- Se etter om to eller flere attributter beskriver “noe annet”, og skill dem i så fall ut.
- Se etter gjentakelser eller indre sammenhenger mellom attributtene.
- Lag gjerne en forekomsttabell for å være sikker på at du forstår problemstillingen.
- Tegn eventuelt et determineringsdiagram for å se slike sammenhenger grafisk.