Skip to main content

Checklist DB Design (EN)

DeThe 5 basisregelsBasic Rules

  1. EenAn entiteitentity is a person,thing or event. A number (for example weight) is eennever persoon,an dingentity but it is an attribute (characteristic) of gebeurtenis.an Een getal of bedrag (bijvoorbeeld gewicht) is nooit een entiteit, maar altijd een atribuut (=eigenschap) van een entiteit.

    entity.
  2. ElkeEvery entiteitentity heefthad preciesexcactly éénone PK (primary key). DeThe primary key maaktis deunique entiteitfor uniekthe (bijvoorbeeldentity. kentekenFor vanexample eensocial auto).

    security number for a person or licence plate number for a car.
  3. EntitietenEntities hebbencan dehave volgendethe follwing relatiesrelations: 1:1, 1:!:N, N:1 of N:M.
    • 1:1 relateisrelations bestaanare vrijwelrare. niet,If alsthey zeoccur, voorkomenyou dancan kunmost jeprobably demerge relateisthe samenvoegen.two relations into one.
    • 1:N enand N:1 isare eignelijkthe hetzelfdesame enand komenwill hetocuur meestin voor.most cases.
    • N:M kunrelation jeis alleentranslated into two 1:N relations via eena koppeltabelso maken.

      called connection-entity/table.
  4. EenA 1:N relatierelation verbindis jedrawn metvia eena lijntjeline. met een 'harkje'. HetThe lijntjeline has staata aantriangle deor 1-kantrake enon hetone 'harkje'side staatand aanjust dea meer-kant.line on the other side. The line is connected to the one-side and the triangle connects the many-side.

  5. BijEvery elktriangle (rake) 'harkje'belongs' hoortto precies éénone FK. DeThe FK verwijstis naarconnected deto the PK vanof dethe tableconnecting waarmeeentity dezeand ishas verbonden.the same data type (the name of the attribute, although the same in content, may differ).

Datatypes

DeThe meestmost voorkomendecommon datatypesdata-type zijn:are:

Datatype Voorbeeld
int -2 147 648 - 2 147 649
varchar(), bijv. varchar(20) "Big Boss 12"
date 2022-04-01
datetime 2022-04-01 18:43:12
decimal(6,2) 1250,95

Relaties (Relation(1:N) tussenbetween entiteitenentities

Een relatie tussen twee entiteiten is vrijwel altijd een 1-op-meer relatie en heeft daardoor aan één kant een 'harkje'.

A relation of two entities is almost always an 1 to many relation.  The many side of the relation had the triangle or rake ('harkje' in Dutch).

image-1643803461861.png
('harkje')

VoorbeeldenExamples

  • éénOne persoonperson bezitowns meermore (één0, 1 or more) cars ad one car belongs to exactly one person.
  • One school class consists out of meer)more auto's(most encommonly nietmore andersthan om1) eenstudents. autoOne heeftstudents geenbelongs tweeto eigenarenone class.
  • éénOne klashome bestaatwork uitassignment meercan studentenbe ensubmitted niet0,1 eenor more times (think about Canvas). One assignment submission belongs to one student.
  • One football team has more players and one player belongs to one footlball team.
  • One school has more students and one student zitis inregistered meerto klassenone school.
  • één
huiswerkopdracht

Note that all these cases are describing the most common situation. Of course, you could think of one student who is meerdereregistered kerenat beantwoordtwo (doorschools, éénbut student,that denkwould aanbe Canvas)a enrare nietcase. éénIf antwoordthis hoortstill bijwould meerderenot huiswerkopdrachtenbe

  • ééna voetbalclubvery heeftrare meercase spelersand enyou nietwant éénto spelerdesign hoortyour bijdatabase meerdereso voetbalculb
  • that
  • één school heeft meerdere studenten en niet éénone student zitcan opbe meerdereregistered scholen
  • at

    Het2 gaator bijmore alschools, dezeyou zakenwould nietend ofup hetwith echtan nietN:M kan.relation Natuurlijk zou een student op meerdere scholen kunnen zitten, maar datwhich is nietore decomplex regel.and Zouwill ditbe weldescribed 'normaal'below.

    zijn,

    Example

    dan

    Suppose zoudenyou wehave detwo relatieentities, ook als meer-meer kunnen zien. Eén school heeft meer studenten en één student zitand opstudy meerderecoach. scholen.In Eenorder meer-op-meerto relatiedetermine wordtthe inrelation, DBask Designyourself Levelwhat 2is besproken.

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

    éénone studie-study coach meer-studentenmore students
    eénone student meermore studie-study coaches

    OKBoth are possible in dittheory, geval is het dus de eerste regel. Dat betekent dat de meer kant het 'harkje' krijgt. De lijn tussen de twee entiteitenbut in hetthe ERDsituation heeftat dusour hetschool harkjeonly aanthe defirst meer-kant.line Bijapplies.

    het

    Thismeans harkjethat hoortthe ookmore deside FK.will be the student, hence it will get the triangle. The relation between the two relations has the tringle on the student side and a plain line on the study coach side. The student will get a FK witch will connect to the PK of the study coach.


    éénone - kantside
    meermore - kantside
    PK éénhas uniekeone unique PK
    éénhas uniekeone unique PK
    Lijntje geenNo 'harkje'triangle (alleenjust streep)a line
    Triangle ('harkje')
    FK geenhas no FK éénone FK verwijstwitch naarpoints deto the PK vanoff dethe éénone kantside

    HetSo the ERD wordtwill dan.look like:

    image-1643791334313.png

    BeideBoth entiteitenentities hebbenhave eengotten uniuekea PKunique enPK. The FK enand harkjetriangle staanare aanone dezelfdethe kant.same side.

    Samengevat:Summarized: hetthe harkjetrinagle staatis aansituated deat meerthe kantmay enside bijand elkwith harkjeevery hoorttrinagle eencomes a FK.

    Of

    Or nogin korter:short:

        HARKJETriangle= = MEER =More= FK

     

     

    N:M (veel-op-veel)

    Stel je voor je hebt de entiteit product en klant. De relatie tussen deze twee entitetien is N:M, veel-op-veel. Eén klant kan immers meer producten kopen en een product kan door meedere klanten worden gekocht.

    Om dit in een database te zetten moet je een koppeltabel aanmaken. Dit is een extra entiteit. Dat ziet er zo uit:

    image-1647114021068.png
    (voor het gemak zijn in dit ERD de datatypen even weggelaten).

    De entiteit product_klant is de koppeltabel en deze verbind het product en de klant aan elkaar zodat er een N:M relatei ontstaat.

    Via de combiantie van de FK's worden producten aan klanten gekoppeld. Stel er is een klant met het id 101 en een klant met id 102 en stel je hebt een product met id 10 en 11. Stel klant 101 en klant 102 hebben allebij product 10 en 11 gekocht. Dan staat er in de koppel tabel de volgende informatie:

    id (PK) klant_id (FK) product_id (FK)
    1 101 10
    2 102 11
    3 101 10
    4 102 11

    Stappenplan maken ERD

    Nog even alle stappen die je moet uitvoeren om een ERD te maken op een rijtje:

    1. Bepaal alle entiteiten. Dit zijn personen, dingen of gebeurtenissen waar je gegevens over wilt vastleggen.

    2. Bepaal van alle entiteiten de attributen (wat je vastlegen).

    3. Bepaal de datatypes van alle attributen.

    4. Zorg ervoor dat elke entiteit een PK krijgt (bij twijfel gebruik je 'id').

    5. Bepaal de relaties tussen de entiteiten. Bij een N:M relatie heb je een koppel tabel nodig.

    6. Teken de relaties. Het harkje staat aan de meer-kant.

    7. Bij elk harkje hoort een FK, de FK verwijst naar de PK met de entiteit waarmee de relatie bestaat.

    8. Lees het verhaal nog een keer door en controleer of je alles wat er in het verhaal staat kunt vastleggen in jouw database ontwerp.

    Checklist, wat gaat er vaak fout?

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

    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.

    --