- 1Introductie
- 2Databasegeschiedenis
- 3Voordelen en mogelijkheden van relationele databases
- 4Klantcontactsysteem
- 5Tabellen en de primaire sleutel
- 6Gegevens koppelen
- 7De één op veel relatie
- 8De veel op veel relatie
- 9De één op één relatie
- 10Database normaliseren
- 11De eerste normaalvorm (1NF)
- 12De tweede normaalvorm (2NF)
- 13De derde normaalvorm (3NF)
- 14Het definitieve database-ontwerp
- 15Nog een voorbeeld: webwinkel
- 16Conclusie
Cursus database ontwerpen
Gegevens koppelen
In de klanttabel slaan we klantgegevens op, maar we moeten voor het klantcontactsysteem ook contactmomenten opslaan. Een contactmoment ontstaat wanneer een klant belt, e-mailt of een brief schrijft.
Je zou misschien bedenken om de datum en een beschrijving van het contactmoment in de klanttabel op te slaan bij de juiste klant. Dat kan echter niet. Het klantnummer moet uniek zijn in de klantnummerkolom. Er mag dus altijd maar 1 rij per klant zijn in de klanttabel. Je zou nog alle contactmomenten in 1 cel kunnen opslaan op dezelfde rij als de klantgegevens (als een soort flat file in 1 cel), maar dat is absoluut niet wenselijk, omdat het dan heel moeilijk wordt om door de contactmomenten te zoeken. (Nb. later in deze cursus databases worden de regels voor goed database-ontwerp op een rij gezet).
Conclusie: we moeten een nieuwe tabel maken voor contactmomenten. Eerst bepalen we wat we allemaal van een contactmoment willen opslaan.
- contactmoment_id (primaire sleutel)
- klantnummer (zodat het contactmoment aan één klant gekoppeld is)
- Datum en tijd
- Een beschrijving van het contactmoment (Inhoud telefoongesprek, inhoud e-mail, inhoud brief, etc)
- Nam het bedrijf contact op met de klant of andersom?: inkomend_uitgaand
- Communicatietype (telefoon, e-mail, fax): com_type
Hieronder staat een conceptversie van de contactmomententabel. Later in deze cursus database ontwerpen bekijken we onderstaande tabel nog eens kritisch aan de hand van de ontwerpregels voor relationele databases.
Op elke rij van de contactmomententabel staat informatie over een uniek contactmoment. Elk contactmoment is uniek identificeerbaar doorde primaire sleutel, het contactmoment_id (eerste kolom). Bovendien is elk contactmoment gekoppeld aan een klant uit de klanttabel door middel van het klantnummer in de tweede kolom.
Met behulp van het klantnummer kunnen bij elke klant in de klanttabel de contactmomenten opgezocht worden en andersom bij elk contactmoment de betreffende klant uit de klanttabel. Er is hier sprake van een '1 op veel' relatie tussen de klant en zijn of haar contactmomenten.
Nu je een voorbeeld gezien hebt van een database is het tijd om in te gaan op de relaties die kunnen bestaan tussen tabellen. Het voorbeeld van de klanttabel en de contactmomententabel is een 'één op veel relatie'. Voor elke klant (1) kunnen meerdere (veel) contactmomenten opgeslagen zijn. Bij het ontwerpen van relationele databases onderscheiden we 3 soorten relaties tussen tabellen.
- De één op veel relatie
- De veel op veel relatie
- De één op één relatie