Wat betekent databasenormalisatie?
Databasenormalisatie is het proces waarbij gegevens in een database worden gereorganiseerd zodat ze aan twee basisvereisten voldoen:
- Er is geen redundantie van gegevens, alle gegevens worden op slechts één plaats opgeslagen.
- Gegevensafhankelijkheden zijn logisch, alle gerelateerde gegevens worden samen opgeslagen.
Databasenormalisatie is om veel redenen belangrijk, maar vooral omdat databases hierdoor zo min mogelijk schijfruimte in beslag nemen, wat de prestaties ten goede komt.
Databasenormalisatie wordt ook wel gegevensnormalisatie genoemd.
Techopedia legt uit wat Databasenormalisatie is
Het eerste doel van databasenormalisatie is het detecteren en verwijderen van alle dubbele gegevens door redundante gegevens logisch te groeperen. Wanneer een stuk data afhankelijk is van een ander, moeten de twee in elkaars nabijheid worden opgeslagen binnen die dataset.
Door alle anomalieën te verwijderen en ongestructureerde gegevens te organiseren in een gestructureerde vorm, verbetert databasenormalisatie de bruikbaarheid van een gegevensset aanzienlijk. Gegevens kunnen eenvoudiger worden gevisualiseerd, inzichten kunnen efficiënter worden geëxtraheerd en informatie kan sneller worden bijgewerkt. Omdat overtollige gegevens worden samengevoegd, wordt de kans op fouten en duplicaten verkleind, waardoor gegevens nog ongeorganiseerder worden. Bovendien neemt een genormaliseerde database minder ruimte in beslag, waardoor veel problemen met schijfruimte verdwijnen en de algehele prestaties aanzienlijk verbeteren.
De drie belangrijkste soorten normalisatie worden hieronder opgesomd. Opmerking: “NF” verwijst naar “normale vorm”.
Eerste normale vorm (1NF)
Tabellen in 1NF moeten aan enkele regels voldoen:
- Elke cel mag slechts één (atomaire) waarde bevatten.
- Elke kolom in de tabel moet een unieke naam hebben.
- Alle waarden in een kolom moeten betrekking hebben op hetzelfde domein.
Tweede normale vorm (2NF)
Tabellen in 2NF moeten in 1NF zijn en mogen geen gedeeltelijke afhankelijkheid hebben (bijv. elk niet-priem attribuut moet afhankelijk zijn van de primaire sleutel van de tabel).
Derde normale vorm (3NF)
Tabellen in 3NF moeten in 2NF zijn en geen transitieve functionele afhankelijkheden hebben op de primaire sleutel.
De volgende twee NF’s bestaan ook, maar worden zelden gebruikt:
Boyce-Codd Normal Form (BCNF).
Een hogere versie van de 3NF, de Boyce-Codd Normal Form, wordt gebruikt om de anomalieën aan te pakken die kunnen ontstaan als er meer dan één kandidaatsleutel bestaat. Ook bekend als 3.5 Normal Form, moet de BCNF in 3NF zijn en in alle functionele afhankelijkheden ( X → Y ), moet X een supersleutel zijn.
Vierde normale vorm (4NF)
Om een tabel in 4NF te krijgen, moet deze in BCNF zijn en geen afhankelijkheid van meerdere waarden hebben.
De eerste drie NF’s werden in de vroege jaren 1970 afgeleid door de vader van het relationele datamodel, E.F. Codd. Bijna alle huidige relationele database engines gebruiken zijn regels.
Sommige relationele database engines voldoen niet strikt aan de criteria voor alle normalisatieregels. Een voorbeeld is de multivalued fields functie die Microsoft introduceerde in de Access 2007 database applicatie. Er is een verhit debat geweest in database kringen over de vraag of dergelijke functies nu dergelijke toepassingen diskwalificeren van het zijn echte relationele database management systemen.