Genre-based Content Engineering

advertisement
Normaliseren
Datamodellering 2006
1
Wat is normaliseren? - 1
Data organiseren in tabelvorm, zó dat:



er minimale redundantie is
update-operaties (toevoegen, wijzigen,
verwijderen) eenvoudig zijn uit te voeren
records in een tabel te identificeren zijn
m.b.v. een unieke sleutel
2
Redundantie: voorbeeld

Suppliers-and-Parts:
wat als een leverancier verhuist?
S#
City
P#
Qty
S1
S1
S1
S2
S2
S3
S4
S4
London
London
London
Paris
Paris
Paris
London
London
P1
P2
P3
P1
P2
P2
P2
P4
300
200
400
100
400
100
200
300
3
Wat is normaliseren? - 2

Normaliseren: bottom-up
datamodelleringstechniek


vgl. ER-methode: top-down
Omvat een aantal stappen
(= normaalvormen):







1NF
2NF
3NF
BCNF
4NF
5NF
6NF
1NF
2NF
3NF
BCNF
4NF
5NF
6NF
2NF veronderstelt,
dat de dataset al in
1NF is, etc.
4
Normaliseren & DBMS-model


Normaliseren in de praktijk gekoppeld
aan het relationele database model:
tabellen
Normaliseren vereist enige basiskennis
van het relationele model
5
Enkele principes RDBMS


Relationele database: verzameling tabellen
Relationele tabel


rechthoekig (dus  spreadsheet tabel!)
rijen (records = tuples) en kolommen (velden, attributen)






cardinaliteit: aantal rijen
graad (degree): aantal kolommen
geen vaste ordening rijen en kolommen
cel: atomaire waarde
Relationele operaties  tabel
Tabellen gekoppeld via sleutels

primary key (pk) – foreign key (fk)
6
Functionele afhankelijkheid - 1
S#
City
P#
Qty
S1
S1
S1
S2
S2
S3
S4
S4
London
London
London
Paris
Paris
Paris
London
London
P1
P2
P3
P1
P2
P2
P2
P4
300
200
400
100
400
100
200
300
S#
City
P#
Qty
• S# is de determinant van City
• City is functioneel afhankelijk van S#
7
Functionele afhankelijkheid - 2
Given a relation R:

attribute Y of R is functionally dependent
on attribute X



in symbols, R.X  R.Y (read: “R.X functionally
determines R.Y”)
if and only if each X-value in R has
associated with it precisely one Y-value in R
(at any one time).
Attributes X and Y may be composite.
8
Sleutels

Candidate key:





unique
niet-reduceerbare combinatie van attributen
(indien composite)
fungeert als determinant voor andere attributen in
de tuple
Primary key: een candidate key gekozen als
identifier
Foreign key: kruisverwijzing naar primary key
9
Normaliseren: document
Dierenartspraktijk K. van Lieshout
Tijgerstraat 5
6814 BA Arnhem
Nota
De heer P. Blom
Zonnebloemstraat 34
6862 AX Oosterbeek
Clientnr: 503
Notanr: 2006-340
Datum: 3-9-2006
Dier
H24 - Max
Verrichting
Injectie rabies
Ontwormingskuur
Bedrag
30,50
27,00
H25 - Hector
Bloedonderzoek
Röntgenfoto
52,50
32,00
–––––––
142,00
Totaal:
10
Normaliseren: NFNF

NFNF (of: NF²) =
Not in First Normal Form

NOTA (Naam, Adres, Plaats, Postcode,
ClientNr, NotaNr, NotaDatum,
{DierId, DierNaam, Verrichting, Bedrag})
11
Normaliseren: 1NF

Geen repeating groups:


NOTA (Naam, Adres, Plaats, Postcode,
ClientNr, NotaNr, NotaDatum)
NOTA_DIER (NotaNr*, DierID, DierNaam,
Verrichting, Bedrag)
12
Normaliseren: 2NF

Elk niet-sleutel attribuut is volledig
afhankelijk van de hele primary key:



NOTA (Naam, Adres, Plaats, Postcode,
ClientNr, NotaNr, NotaDatum)
NOTA_DIER (NotaNr*, DierID*,
Verrichting, Bedrag)
DIER (DierID, DierNaam)
13
Normaliseren: 3NF

Er is geen transitieve afhankelijkheid:





als A  B en B  C, dan A  C (transitief)
NOTA (ClientNr*, NotaNr, NotaDatum)
CLIENT (ClientNr, Naam, Adres, Plaats,
Postcode)
NOTA_DIER (NotaNr*, DierID*,
Verrichting, Bedrag)
DIER (DierID, DierNaam)
14
Maar... zó niet goed

Verrichting repeteert! - NFNF had
moeten zijn:



NOTA (Naam, Adres, Plaats, Postcode, ClientNr,
NotaNr, NotaDatum,
{DierId, DierNaam, {VerID, Verrichting, Bedrag}})
Vraag: zijn bedragen voor elke verrichting
standaard? Of uurtarief?
Bovendien is het in dit ontwerp bewerkelijk
om alle dieren van een client te achterhalen
15
Boyce/Codd Normal Form



Verschuift aandacht van primaire
sleutels naar kandidaat-sleutels:
BCNF: elke determinant is een
kandidaat-sleutel
In de praktijk zijn de meeste relaties in
3NF ook in BCNF
16
Meer…

Rules of Data Normalization
[DataModel.org]


Database eLearning, ch. 4:


http://www.datamodel.org/NormalizationRules.html
http://db.grussell.org/ch4.html
Normalization [University of Texas]:

http://www.utexas.edu/its/windows/database/datam
odeling/rm/rm7.html
17
Download