Skip to main content

Checklist DB Design

Regels ten aanzien van ERD's

  1. Heeft elke entiteit precies één PK (PrimaryKey)?

  2. 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.

  3. Heeft elke attribuut een datatype?

  4. Telefoonnummer is geen int want dan valt de eerst 0 weg, immers 0612341234 wordt 612341234

  5. Datum is altijd datatype date.

  6. Datum plus tijd is datatype datetime.

  7. 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.

  8. Bij elk 'harkje' hoort precies één FK. De FK verwijst naar de PK van de table waarmee deze is verbonden.

  9. De PK en FK die bij elkaar horen hebben hetzelde datatype.

  10. int heeft een vaste lengte, het is dus int en niet int(11).

  11. varchar heeft altijd een lengte, dit is de maximaal lengte die kan voorkomen. varchar(5) als plaatsnaam is dus onjuist.

  12. 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 tussen twee entiteiten is vrijwel altijd een 1-op-meer relatie.

Voorbeelden

  • één persoon bezit meer (één of meer) auto's en niet anders om een auto heeft geen twee eigenaren
  • één klas bestaat uit meer studenten en niet een student zit in meer klassen
  • één huiswerkopdracht is meerdere keren beantwoord (door één student, denk aan Canvas) en niet één antwoord hoort bij meerdere huiswerkopdrachten
  • één voetbalclub heeft meer spelers en niet één speler hoort bij meerdere voetbalculb
  • één school heeft meerdere studenten en niet één student zit op meerdere scholen

Het gaat bij al deze zaken niet of het echt niet kan. Natuurlijk zou een student op meerdere scholen kunnen zitten, maar dat is niet de regel. Zou dit wel 'normaal' zijn, dan zouden we de relatie ook als meer-meer kunnen zien. Eén school heeft meer studenten en één student zit op meerdere scholen. Een meer-op-meer relatie wordt in DB Design Level 2 besproken.

Neem student en studie-couch. Welke regel denk je dat van toepassing is?

één studie-coach meer-studenten
eén student meer studie-coaches

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

Het ERD wordt dan.

image-1643791334313.png

Beide entiteiten hebben een uniueke PK en FK en harkje staan aan dezelfde kant