Checklist DB Design
Regels ten aanzien van ERD's
- Heeft elke entiteit precies één PK (PrimaryKey)?
- Is elke PK uniek, dus kan er maar één van voorkomen?
(Achternaam kan bijvoorbeeld geen PK zijn, omdat er meer mensen zijn met dezelfde achternaam).
Tip: meestal zijn PK's int en vaak heten ze gewoon id. - Heeft elke attribuut een datatype?
- Telefoonnummer is geen int want dan valt de eerst 0 weg, immers 0612341234 wordt 612341234
- Datum is altijd datatype date.
- Datum plus tijd is datatype datetime.
- De relatie heeft maximaal één 'harkje'. Het harkje staat aan de 'meer' kant. Dus een student 'hoort' bij één klas en bij een klas 'horen' meerdere studenten. Het harkje staat in dit voorbeeld dan aan de student kant.
- Bij elk 'harkje' hoort precies één FK. De FK verwijst naar de PK van de table waarmee deze is verbonden.
- De PK en FK die bij elkaar horen hebben hetzelde datatype.
- int heeft een vaste lengte, het is dus int en niet int(11).
- varchar heeft altijd een lengte, dit is de maximaal lengte die kan voorkomen. varchar(5) als plaatsnaam is dus onjuist.
- String datatypes zijn er in verschillende vormen in Database-land. De meest gebruikte zijn: char en varchar; char heeft een vaste lengte, varchar heeft een maximale lengte. String bestaat niet in MySQL.
Relaties tussen entiteiten.
Een relatie in tussen twee entiteiten is vrijwel altijd een 1 op meer relatie. Neem student en studie-couch. Welke regel denk je dat van toepassing is?
één studie-coach | meer-studenten |
meer studenten | één studie-coach |
OK in dit geval is het dus de eerste regel. Dat betekent dat de meer kant het 'harkje' krijgt. De lijn tussen de twee entiteiten in het ERD heeft dus het harkje aan de meer-kant. Bij het harkje hoort ook de FK.
één - kant | meer - kant | |
PK | één unieke PK | één unieke PK |
Lijntje | geen 'harkje' (alleen streep) | 'harkje' |
FK | geen FK | één FK verwijst naar de PK van de één kant |