leren in het E-landschap...
image1 image2 image3 image3

Regatta zeilen en het normaliseren van een database

De relatie tussen de twee onderwerpen in de titel van dit artikel zal niet iedereen direct duidelijk zijn. Voor mij was het regatta zeilen de trigger om mijn database skills weer eens op te poetsen. Kortgeleden werd ik gevraagd om de mee wilde doen in de jurering van de Maurik najaarsregatta, niet vanwege mijn regelkennis van het wedstrijd zeilen, maar meer omdat er iemand gezocht werd, die enige handigheid met computers en wat specifieker handig met Excel is.

Nu vond ik de werking van de spreadsheet om de resultaten van de zeilmanches in te noteren redelijk houterig en niet uitblinken in gebruikersgemak. Nu heb ik met mijn grote mond geroepen dat ik wel een systeempje ga maken voor op onze vereniging ‘s website, gebaseerd op MySQL.

Dus ik moet het hele proces weer eens op een rij gaan zetten, vandaar deze beschrijving.

De praktische uitvoering doe ik met Excel, MySQL, phpMyAdmin en MySQLWorkbench, Adobe CS, maar eerst de data analyse...

Data analyse, wordt ook wel het zogenaamde normaliseren genoemd.

Beginnende database makers zullen in eerste instantie de neiging hebben om alle data in één grote tabel te plaatsen.

De problemen die dan omstaan zijn de volgende:

Een update-anomalie is een fout die optreedt bij een afwijking van de 'standaard werkwijze' bij het vernieuwen (updaten) van gegevens in een database.

Een insert-anomalie is een fout die optreedt bij het invoeren van een nieuw record waneer informatie is gekoppeld, zodat bepaalde gegevens niet kunnen worden ingevoerd zonder dat de andere gegevens moeten worden ingevoerd.

Een delete-anomalie is een fout die optreedt, wanneer de database structuur niet goed is ontworpen en teveel gegevens in één tabel zijn samengevat. Voorbeeld: waar klant en ordergegevens in één tabel zijn opgenomen zal bij het verwijderen van de record (tuple) van de order tegelijk alle gegevens van de klant verwijderd worden.

Alle gegevens die berekend kunnen worden, moeten niet in de tabellen worden geplaatst. Maar in de programma code “in mijn geval PHP” waarmee formulieren of rapporten worden gegenereerd.


Normalisatie is het proces van het efficiënt ordenen van gegevens in een database. Er zijn twee doelen van het normaliseringsproces:

  • Het voorkomen dat overbodige data “redundante data, bijvoorbeeld het opslaan van dezelfde gegevens in verschillende tabellen”.

     

  • Het waarborgen van data afhankelijkheid “alleen het opslaan van aan elkaar gerelateerde gegevens in één tabel”.

 

Bij het proces van normaliseren, worden een indeling als richtlijn gebruikt:

Eerste normaalvorm (1NF)

Eerste normale vorm (1NF) stelt het zeer basisregels voor een georganiseerde database:

  • Elimineren van overlappende kolommen in dezelfde tabel.

  • Maak aparte tabellen voor elke groep gerelateerde gegevens en iedere tabel kent een unieke kolom (de primaire sleutel ).

Tweede normaalvorm (2NF)

Tweede normale vorm (2NF) verder wordt het concept om dubbele gegevens:

  • Voldoen aan alle eisen van de eerste normale vorm.

  • Verwijder sub sets van gegevens die van toepassing zijn op meerdere rijen van een tabel en maak voor deze een aparte tabel.

  • Maak relaties tussen deze nieuwe tabellen en hun voorlopers door het gebruik van externe sleutels .

Derde normaalvorm (3NF)

Derde normaalvorm (3NF) gaat nog een grote stap verder:

  • Voldoen aan alle eisen van de  eerste en de tweede normale vorm.

  • Kolommen die niet verwijderen afhankelijk op de primaire sleutel.

Boyce-Codd normaalvorm (BCNF of 3.5NF)

De Boyce-Codd normaalvorm, ook wel aangeduid als 3,5 normale vorm, voegt nog een eis toe aan de 3NF:

  • Voldoen aan alle eisen van de derde normaal vorm.

  • Elke determinant moet voorzien zijn van een kandidaat sleutel.

Vierde normaalvorm (4NF)

Tot slot, de vierde normale vorm (4NF) heeft een aanvullende eis:

  • Voldoen aan alle eisen van de derde normaal vorm.

  • Een relatie is 4NF als het geen meerwaardige afhankelijkheden.

Omdat nu niet alle gegevens in één grote tabel zitten, moeten we nu de relaties tussen tabellen gaan leggen, dit gebeurd met behulp van de sleutels.

  • Primary key de sleutel “key” die wordt aangeduid als de primaire sleutel, moet een unieke waarde “integer = een geheel getal” voor elke record bevatten. Deze primary key wordt meestal automatisch opgehoogd, bij het aanmaken van iedere nieuwe record.

  • Foreign key Een sleutel die naar een andere tabel verwijst wordt een Foreign key genoemd.

  • Compound key Is een samengestelde sleutel.

 


 


 

Relaties kunnen zijn:

1:1

1: N

N:1

N:N      (deze relatie is niet mogelijk en is weer een reden om een tussen tabel te maken).

 

Als het normaliserings-proces is voltooid, wordt er een volgende stap genomen het maken van een Een databasemodel maken “ook entiteitsrelatiediagram genoemd”. Kortom nu ik dit alles weer eens op schrift heb gezet. Kan ik er praktisch tegen aan, met het nieuwe regatta systeem.


 

2021  Hans Huijsing Blog  
Our website is protected by DMC Firewall!