Databasenormalisatie
Uit Wikipedia, de vrije encyclopedie
Databasenormalisatie is een hulpmiddel bij het ontwerpen van gegevensbanken. Oorspronkelijk begonnen als noodzaak om data in een database te kunnen opslaan in het beperkte geheugen van de toenmalige computers, heeft databasenormalisatie zijn eigen rechtvaardiging gekregen.
Door herhaalde gegevens in een tabel apart op te slaan in een gerelateerde tabel is het mogelijk niet alleen het dubbel opslaan van gegevens te vermijden, maar vooral ook is het mogelijk foute verdubbelingen te voorkomen. Zo kunnen plaatsnamen bij adresgegevens in een aparte tabel opgenomen worden waardoor verkeerde spelling vermeden kan worden. Maar ook kunnen naam-, adres- en woonplaatsgegevens (NAW) apart opgeslagen worden van order- of abonnementsgegevens. Hierdoor kan vermeden worden dat een klant of abonnee twee gelijke rekeningen krijgt voor een eenmalig afgenomen product.
Inhoud |
[bewerk] Relationele databanken
Relationele databases maken het mogelijk gegevens in een tabel dwingend te koppelen aan een andere tabel. Dit gebeurt door de database-engine en er is geen bijzondere code voor nodig.
[bewerk] Normaalvormen
Er zijn vele manieren om overbodige gegevens (redundantie) te beperken (dit is een database normaliseren). Deze oplossingen noemt men normaalvormen. Er zijn er meerdere bekend maar de meest gebruikte zijn de zogenaamde eerste, tweede, derde en vierde normaalvorm.
[bewerk] Definitie
- Functionele afhankelijkheid
- Men zegt dat attribuut B (van een gegevensobject) functioneel afhankelijk is van attribuut A als voor elke waarde van A er maar één enkele waarde van B voorkomt. Zo is in een adres het attribuut "Land" functioneel afhankelijk van het attribuut "Gemeente". Voor elke waarde van de gemeente is er maar één mogelijke waarde voor het land.
[bewerk] Eerste normaalvorm 1NV
- elk attribuut bevat een atomaire waarde (bijvoorbeeld een telefoonnummer-attribuut mag geen twee telefoonnummers bevatten).
- geen enkel attribuut wordt herhaald
- alle attributen blijven constant in de tijd
[bewerk] Tweede normaalvorm 2NV
- voldoet aan de eerste normaalvorm
- alle niet-sleutelattributen zijn functioneel totaal afhankelijk van de primaire sleutel.
[bewerk] Derde normaalvorm 3NV
- voldoet aan de tweede normaalvorm
- alle attributen die niet tot een sleutel behoren hangen niet af van een niet-sleutelattribuut
[bewerk] Boyce-Codd-normaalvorm BCNV
- voldoet aan de derde normaalvorm
- er zijn geen transitieve afhankelijkheden.
[bewerk] Vierde normaalvorm 4NV
- voldoet aan de Boyce-Codd-normaalvorm
- bevat geen enkele meervoudige functionele afhankelijkheid