SQLTutorial.nl
Eerste Normaalvorm
Met de resultaten uit de 0NV kunnen we verder met de eerste normaalvorm (1NV). Hiervoor gaan we een aantal dingen doen:
- Procesmatige gegevens worden verwijderd, want deze worden automatisch gegenereerd bij het maken van de factuur.
- We gaan de hoofdgroep een sleutel geven, deze moet namelijk uniek zijn.
- Repeterende gegevens worden samengevoegd en hieraan wordt de hoofdsleutel gegeven, maar ook een nieuwe unieke sleutel
Factuur
Gegeven de factuur:
| Factuur | ||
|---|---|---|
| Klantnummer: 100 | Factuurdatum: | |
| Peter Hanson | 25 November 2009 | |
| Klavierstraat 15 | Factuurnummer: | |
| 1234 DD Nieuwstad | DUI0925120 | |
| Bestelling | ||
| Aantal | Omschrijving | Prijs |
| 1 | Boek: De Grote Vlucht - Andrew Stevens | 12,55 |
| 1 | Boek: Geen traan te veel - Jan van Apel | 17,99 |
| Totaal: | 30,54 | |
1. Verwijderen procesmatige gegevens
Het totaalbedrag wordt berekend aan de hand van de bestelde items. Dit is een proces en wordt daarom verwijderd.
2. Unieke sleutel
Het factuurnummer dient uniek te zijn en wordt om deze reden als unieke sleutel aangegeven.
3. Repeterende gegevens (RG)
De velden aantal, omschrijving en prijs zijn herhalende gegevens. Deze geven we aan.
- 1NV
- FACTUUR
- Factuurnummer
- Factuurdatum
- Klantnummer
- Klantnaam
- adres
- postcode
- woonplaats
- [RG] aantal
- [RG] omschrijving
- [RG] prijs
totaal
We hebben de repeterende gegevens aangegeven, maar deze moeten ook gegroepeerd worden. We verwijderen direct de gegevens uit de hoofdgroep
Aan de gegroepeerd gegevens geven we de hoofdsleutel van de groep FACTUUR mee, zodat er een verbinding ligt tussen deze twee. Tevens geven we een sleutel mee waarmee we deze gegevens herkennen.
- 1NV
- FACTUUR
- Factuurnummer
- Factuurdatum
- Klantnummer
- Klantnaam
- adres
- postcode
- woonplaats
- BESTELDE_PRODUCTEN
- Factuurnummer
- Productnummer
- aantal
- omschrijving
- prijs
Zoals te zien is naast factuurnummer als sleutel ook productnummer als sleutel gegeven.
Deze staat nergens op de factuur vermeld, om deze reden hebben we een sleutel gekozen die uniek is.
We zijn uitgegaan van productnummer omdat we verwachten dat deze uniek is.
Naast dit alles hebben we deze groep de naam BESTELDE_PRODUCTEN gegeven