Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdAnnemie Hermans Laatst gewijzigd meer dan 10 jaar geleden
1
Normaliseren Datamodellering 2006
2
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
3
Redundantie: voorbeeld
Suppliers-and-Parts: wat als een leverancier verhuist?
4
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.
5
Normaliseren & DBMS-model
Normaliseren in de praktijk gekoppeld aan het relationele database model: tabellen Normaliseren vereist enige basiskennis van het relationele model
6
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)
7
Functionele afhankelijkheid - 1
S# City P# Qty S# is de determinant van City City is functioneel afhankelijk van S#
8
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.
9
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
10
Normaliseren: document
11
Normaliseren: NFNF NFNF (of: NF²) = Not in First Normal Form
NOTA (Naam, Adres, Plaats, Postcode, ClientNr, NotaNr, NotaDatum, {DierId, DierNaam, Verrichting, Bedrag})
12
Normaliseren: 1NF Geen repeating groups:
NOTA (Naam, Adres, Plaats, Postcode, ClientNr, NotaNr, NotaDatum) NOTA_DIER (NotaNr*, DierID, DierNaam, Verrichting, Bedrag)
13
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)
14
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)
15
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
16
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
17
Meer… Rules of Data Normalization [DataModel.org]
Database eLearning, ch. 4: Normalization [University of Texas]:
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.