Checklist DB Design (EN)
DeThe 5 basisregelsBasic Rules
EenAnentiteitentity is a person,thing or event. A number (for example weight) iseenneverpersoon,andingentity but it is an attribute (characteristic) ofgebeurtenis.anEen getal of bedrag (bijvoorbeeld gewicht) is nooit een entiteit, maar altijd een atribuut (=eigenschap) van een entiteit.
entity.ElkeEveryentiteitentityheefthadpreciesexcactlyéénone PK (primary key).DeThe primary keymaaktisdeuniqueentiteitforuniekthe(bijvoorbeeldentity.kentekenForvanexampleeensocialauto).
security number for a person or licence plate number for a car.EntitietenEntitieshebbencandehavevolgendethe follwingrelatiesrelations: 1:1,1:!:N, N:1 of N:M.- 1:1
relateisrelationsbestaanarevrijwelrare.niet,Ifalstheyzeoccur,voorkomenyoudancankunmostjeprobablydemergerelateisthesamenvoegen.two relations into one. - 1:N
enand N:1isareeignelijkthehetzelfdesameenandkomenwillhetocuurmeestinvoor.most cases. - N:M
kunrelationjeisalleentranslated into two 1:N relations viaeenakoppeltabelsomaken.
called connection-entity/table.
- 1:1
EenA 1:Nrelatierelationverbindisjedrawnmetviaeenalijntjeline.met een 'harkje'. HetThelijntjeline hasstaataaantriangledeor1-kantrakeenonhetone'harkje'sidestaatandaanjustdeameer-kant.line on the other side. The line is connected to the one-side and the triangle connects the many-side.BijEveryelktriangle (rake) 'harkje'belongs'hoorttoprecies éénone FK.DeThe FKverwijstisnaarconnecteddeto the PKvanofdethetableconnectingwaarmeeentitydezeandishasverbonden.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).
VoorbeeldenExamples
éénOnepersoonpersonbezitownsmeermore (één0, 1 or more) cars ad one car belongs to exactly one person.- One school class consists out of
meer)moreauto's(mostencommonlynietmoreandersthanom1)eenstudents.autoOneheeftstudentsgeenbelongstweetoeigenarenone class. éénOneklashomebestaatworkuitassignmentmeercanstudentenbeensubmittedniet0,1eenor 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
zitisinregisteredmeertoklassenone school. één
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
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.
Example
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:
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.
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.
PK | ||
Lijntje | Triangle ('harkje') |
|
FK |
HetSo the ERD wordtwill dan.look like:
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.
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:
(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:
- Bepaal alle entiteiten. Dit zijn personen, dingen of gebeurtenissen waar je gegevens over wilt vastleggen.
- Bepaal van alle entiteiten de attributen (wat je vastlegen).
- Bepaal de datatypes van alle attributen.
- Zorg ervoor dat elke entiteit een PK krijgt (bij twijfel gebruik je 'id').
- Bepaal de relaties tussen de entiteiten. Bij een N:M relatie heb je een koppel tabel nodig.
- Teken de relaties. Het harkje staat aan de meer-kant.
- Bij elk harkje hoort een FK, de FK verwijst naar de PK met de entiteit waarmee de relatie bestaat.
- 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?
- Heeft elke entiteit precies één PK (Primar yKey)?
- 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.
--