Difference between revisions of "6238 Databaser Agenda/Normalisering"

From Teknologisk videncenter
Jump to: navigation, search
(3. Normalform)
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
=Normalisering=
 
=Normalisering=
==Unormaliseret tabel==
+
Normalisering er et regelsæt til at kontrollerer at vores database tabeller har en fornuftig struktur.
[[File:6238 Databaser Agenda Normalisering1.png|750px]]
 
  
===1. Normalform===
+
Oprindelig blev defineret 5 normalformer nummereret fra 1 til 5. Senere kom dog også Boyce-Codd normalformen (BCNF) der i praksis placeres mellem 3. og 4. uden dog at være direkte afhængig af disse.  
''En relation, som er defineret over domæner, hvis elementer er atomare, dvs. udelelige, siges at være normaliseret.
 
En relation er på første normalform, hvis ingen af dens domæner har elementer,der i sig selv er mængder.
 
''
 
  
I eksemplet herover er Ordrelinier er en mængde i sig selv, og samtidig repeterende, og skal derfor i egen tabel
+
Her vil vi dog kun tale om de første 3.
  
[[File:6238 Databaser Agenda Normalisering2.png]]
+
==Unormaliseret tabel==
 +
Her under er vis en unormaliseret tabel som indeholder nogle oplagt fejl. I det efterfølgende vil vi vha. normaliserings reglerne omdanne dette til tabeller der overholder 3. normalform.
  
Et par eksempler på ikke atomare attributter kan være
+
[[File:6238 Databaser Agenda Normalisering1.png]]
  
Navn: Jens Jensen
+
===1. Normalform===
 +
''En relation, som er defineret over domæner, hvis elementer er atomare, dvs. udelelige, siges at være normaliseret.
 +
''
 +
''En relation er på første normalform, hvis ingen af dens domæner har elementer,der i sig selv er mængder.
 +
''
  
Adresse: Bygade 12
+
I eksemplet herover er Ordrelinier er en mængde i sig selv, og samtidig repeterende, og skal derfor i egen tabel.
  
 +
På samme måde er VNr/VNavn deleligt i VNr og VNavn og dermed ikke atomart
  
I stedet anvendes
+
[[File:6238 Databaser Agenda Normalisering2.png]]
 
 
Fornavn: Jens
 
 
 
Efternavn: Jensen
 
 
 
Gade: Bygade
 
 
 
Nr: 12
 
 
 
  
 
===2. Normalform===
 
===2. Normalform===
''En relation R er på anden normalform, hvis den er på første normalform, og hvisenhver ikke-nøgle-attribut er fuldt funktionelt afhængig af enhver kandidatnøgle i R.''
+
''En relation R er på anden normalform, hvis den er på første normalform, og hvisenhver ikke-nøgle-attribut er fuldt funktionelt afhængig af enhver kandidatnøgle i R.''
  
 
I eksemplet er kundeoplysninger kun afhængig af en del af nøglen, nemlig Knr, ikke hele nøglen.
 
I eksemplet er kundeoplysninger kun afhængig af en del af nøglen, nemlig Knr, ikke hele nøglen.
Line 39: Line 32:
  
 
===3. Normalform===
 
===3. Normalform===
''En relation R er på tredje normalform, hvis den er på anden normalform og detgælder, at ingen ikke-nøgle-attribut er transitivt afhængig af nogen kandidatnøgle i R.
+
''En relation R er på tredje normalform, hvis den er på anden normalform og detgælder, at ingen ikke-nøgle-attribut er transitivt afhængig af nogen kandidatnøgle i R.
''
+
''
  
 
Selv om By ikke der direkte afhængig af Knr, er by afhængig af Postnr som er afhængig af Knr.
 
Selv om By ikke der direkte afhængig af Knr, er by afhængig af Postnr som er afhængig af Knr.
 
Derfor er By transitiv afhængig af Knr og skal i egen tabel.
 
Derfor er By transitiv afhængig af Knr og skal i egen tabel.
 +
 +
På samme måde er VNavn og Pris afhængig af VNr der heller ikke er en del af primærnøglen.
  
 
[[File:6238 Databaser Agenda Normalisering4.png]]
 
[[File:6238 Databaser Agenda Normalisering4.png]]

Latest revision as of 17:16, 2 November 2015

Normalisering

Normalisering er et regelsæt til at kontrollerer at vores database tabeller har en fornuftig struktur.

Oprindelig blev defineret 5 normalformer nummereret fra 1 til 5. Senere kom dog også Boyce-Codd normalformen (BCNF) der i praksis placeres mellem 3. og 4. uden dog at være direkte afhængig af disse.

Her vil vi dog kun tale om de første 3.

Unormaliseret tabel

Her under er vis en unormaliseret tabel som indeholder nogle oplagt fejl. I det efterfølgende vil vi vha. normaliserings reglerne omdanne dette til tabeller der overholder 3. normalform.

6238 Databaser Agenda Normalisering1.png

1. Normalform

En relation, som er defineret over domæner, hvis elementer er atomare, dvs. udelelige, siges at være normaliseret.

En relation er på første normalform, hvis ingen af dens domæner har elementer,der i sig selv er mængder.

I eksemplet herover er Ordrelinier er en mængde i sig selv, og samtidig repeterende, og skal derfor i egen tabel.

På samme måde er VNr/VNavn deleligt i VNr og VNavn og dermed ikke atomart

6238 Databaser Agenda Normalisering2.png

2. Normalform

En relation R er på anden normalform, hvis den er på første normalform, og hvisenhver ikke-nøgle-attribut er fuldt funktionelt afhængig af enhver kandidatnøgle i R.

I eksemplet er kundeoplysninger kun afhængig af en del af nøglen, nemlig Knr, ikke hele nøglen. Derfor skal kunde i en tabel for sig.

6238 Databaser Agenda Normalisering3.png

3. Normalform

En relation R er på tredje normalform, hvis den er på anden normalform og detgælder, at ingen ikke-nøgle-attribut er transitivt afhængig af nogen kandidatnøgle i R.

Selv om By ikke der direkte afhængig af Knr, er by afhængig af Postnr som er afhængig af Knr. Derfor er By transitiv afhængig af Knr og skal i egen tabel.

På samme måde er VNavn og Pris afhængig af VNr der heller ikke er en del af primærnøglen.

6238 Databaser Agenda Normalisering4.png