Skip to main content

Splitsen N:M relatie

Normaliseren

In de vorige les hebben we de eerste stappen van het normaliseren geleerd.

Stap 1, maak een lijst

Stap 2, splits waar nodig  de attributen

Stap 3, splits waar nodig in twee entiteiten

Nu gaan we nog een stap toevoegen.

In onze vorige les hadden we het over leerlingen en hun studiecoach. In dat voorbeeld had één studiecoach meerdere leerlingen maar een leerling had één studiecoach.

De relatie studiecoach:leerling was 1:N

Maar het kan ook anders, namelijk:

De relatie studiecoach:leerling is N:M

Dat betekent dat een studiecoach meerdere leerlingen heeft, maar dat andersom ook geldt dat een leerlingen meerdere studiecoaches heeft.

Laten we de stappen nog een keer doorlopen met dit nieuwe voorbeeld.

Stap1, maak een lijst

image-1632409442722.pngimage-1632423177376.png

In dit voorbeeld heeft Bailey Spears twee studiecoaches.studiecoaches: Judit Mustafa en Ales Maxwell.

Stap 2, splits attributen

IsDit is in dit voorbeeld al gedaan dus dit hoeft niet verder meer.

Stap 3, splits waar nodig in entiteiten

We moeten nu ook splitsen, maar omdat we meer studiecoaches per leerling kunnen hebben moeten we anders splitsen. Let op dat in het voorbeeld er twee studiecoaches bij één leerling horen. Het zou ook zo kunnen zijn dat er drie of nog meer studiecoaches aan één leerling kunnen worden gekoppeld.

Als we dit soort situaties tegen komen waar de relatie N:M is. dan moeten we splitsen via een koppelentiteit.

image-1632410260924.png

We zien nu drie entiteiten; leerling, studiecoach en de koppelentiteit.koppelentiteit. Kijk goed naar de nummers in de koppelentiteit. Zie je hoe de koppeling werkt? De koppeling verbind als het ware de linker entiteit leerling met de rechter entiteit studiecoach. In de koppelentiteit staan telkens twee ID's die verwijzen naar een leerling en een studiecoach. Dus leerling 213421 is gekoppeld aan studiecoach 1 en dezelfde leerling 213421 is ook gekoppeld aan studiecoach 2.

Keys van de koppelentiteit

In de koppelentiteit moet je nog een PK plaatsen. Een PK mag een samengestelde key zijn Dat is een key die uit twee of meer velden bestaat. De combinatie leerling_id en studiecoach_id is altijd uniek en zou dus een PK kunnen zijn.

In de praktijk is het echter veel eenvoudiger om gewoon nog een extra key ID toe te voegen.

image-1632423535537.png

Opdracht 1

Maak een ERD van de volgende drie entiteiten. Neem daarbij ook de koppelentiteit op. Benoem de keys, PK en FK en tekneteken de relaties op de juiste manier.

image-1632410260924.png

Lever een schermafdruk in van je ERD.

Opdracht 2

Maar een ERD van de volgende gegevens. Bepaal de entiteiten, attributen, keys en relaties.

image-1632422136615.png

Lever een schermafdruk in van je ERD.

Opdracht 3

Maak van de volgende gegevens een ERD. Bepaal de entiteiten, attributen, keys en relaties.

Je kunt de gegevens uit de onderstaande tabel via copy/pase naar Excel overzetten. Excel kan je dan gebruiken bij het splitsen.

StudentCursusCoachtelefoon_coach
Kevin DrumDigitale Vaardigheden, Rekenen, PHPAyoub06 1221 3268
Murvin DrakePHP, JavaScriptAyoub06 1221 3268
John Jones, 1234C++Ayoub06 1221 3268
Sally-Jane JonesHTML, PytonAyoub06 1221 3268
David (getrouwd)Rekenen, PHPAyoub06 1221 3268
Murvin DrakePHP, JavaScriptSamina06 2100 3485
Murvin DrakeC++Samina06 2100 3485

Lever een schermafdruk in van je ERD.

Opdracht 4

Maak van de volgende gegevens een ERD. Bepaal de entiteiten, attributen, keys en relaties.

Je kunt de gegevens uit de onderstaande tabel via copy/pase naar Excel overzetten. Excel kan je dan gebruiken bij het splitsen.

lantboek_idboek ISBNTitel uitgeleenduitleentermijningeleverd
Caris Villa234189817525766-0De boze wollf09/06/202121 
Caris Villa234288817333566-1De lastige wereld07/05/20212114/05/2021
Caris Villa134585817525766-0Op reis met JJ28/04/20212129/04/2021
Caris Villa232269817528866-3Het grote feest04/05/20212125/05/2021
Ayana Tucker232270817528866-4Het grote feest29/05/20213507/06/2021
Shola Greig134585817525766-0Op reis met JJ28/05/202121 

Lever een schermafdruk in van je ERD.

Opdracht 5

Bij autohandel “Krakkemik” staan er auto's van verschillende merken op het terrein. In hun database staat bijvoorbeeld dat er; een rode Opel Astra uit 1998 voor 1500 euro te koop is, een groene Ford Escort uit 2002 voor 2000 euro en een Peugeot waarvan de prijs 4000 euro is.

Herken jij de entiteit? Van wat wordt hier gegevens vastgelegd?

En wat zijn de attributen van de entiteit? Benoem alle attributen.

Maak het ERD in Lucichart.

Opgave 6, ToDo App

Maak een datamodel (ERD) voor een ToDo applicatie. In de Todo applicatie wil je de naam van een ToDo item kunnen vastleggen. Van elk ToDo item wil je de titel kunnen vastleggen, bijvoorbeeld "paspoort verlengen". Verder wil je van elk ToDo item vastleggen wanneer hij is aangemaakt en of hij afgerond is.

Verder wil je de ToDo items opdelen in categorieën. Bijvoorbeeld, de categorie "boodschappen", "privé" of "werk". Van elke categorie wil je vastleggen wanneer deze voor het laatst gewijzigd is.

Maak het ERD in Lucichart.

Opgave 7, Covid-19 test

Het RIVM wil een eenvoudige database waarin ze kunnen zien welke persoon wanneer is getest en wat de uitslag was (positief of negatief). Van alle geteste hoeft alleen de voor- en achternaam en het e-mailadres te worden vastgelegd.

Het RIVM wil ook graag weten of de geteste persoon de Corona app heeft geactiveerd. Als dat zo is dan kunnen ze namelijk via de app andere mensen op de hoogte stellen als zij langere tijd bij een positief getest persoon in de buurt zijn geweest.

Maak het ERD in Lucichart.

Opgave 8, Fietsenmaker Snelle Jelle

Fietsenmaker Snelle Jelle wil na een reparatiebeurt zijn klanten per SMS of Whatspapp op de hoogte stellen dat de reparatie klaar is. In dit bericht wil hij ook vertellen hoe hoog de reparatiekosten zijn.

Omdat veel klanten meer dan één fiets hebben, wil hij van de fietsen ook wat kenmerken vastleggen. Hij wil het merk, model, type en kleur kunnen vastleggen. 

Van elke reparatiebeurt wil hij verder vastleggen wanneer het onderhoud plaatsvond, hoe lang de reparatie duurde, wat er is uitgevoerd en de prijs. Alle reparatiebeurten hebben een standaard prijs. Zo kost het vervangen van een binnenband 12 euro en het vervangen van de ketting op een stadsfiets 37 euro.

Maak het ERD in Lucichart.

--