Meer-meer: werkt in een ERD, maar niet in een relationele database#
Soms ontstaat er in een ERD een zogenaamde meer-meerrelatie. Dat betekent dat de ERDish-zinnen in beide richtingen ‘meer’ bevatten.
Bijvoorbeeld de relatie tussen klanten en producten:
product en klant
Ieder product wordt gekocht door nul of meer klanten.
Iedere klant koopt één of meer producten.
Hier hoort in eerste instantie het volgende ERD bij:

Als we dit zouden willen opslaan in twee tabellen, dan lukt dat niet goed: als we in de tabel klant een productkolom zouden opnemen, dan kan de klant maar 1 product bestellen. En als we bij product een klant zouden willen opnemen, dan kan maar 1 klant dat product bestellen.
Met product bedoelen we bijvoorbeeld ‘een zwart T-shirt in maat M’, waarvan de winkel er honderd heeft liggen.
Een oplossing zou kunnen zijn dat we voor elk individueel ding een rij aanmaken in de database, maar dat voelt raar; we gaan dan heel vaak hetzelfde zeggen in de databasetabel alleen maar om dit probleem op te lossen.
Vaak betekent een meer-meerrelatie eigenlijk iets op zichzelf en kunnen we een tabel bestelling erbij maken. Die kan dan verwijzen naar klant en product. Nog handiger is het om een vierde entiteit erbij
te maken, die van de ‘bestelregel’: wat als ik vier zwarte T-shirts wil bestellen?
De “klassieke” structuur voor klanten die producten kopen wordt dan als volgt:

Op deze manier is er geen enkele meer-meerrelatie.
Oefening 1
Maak voor jezelf de ERDish-zinnen bij elke relatie in bovenstaand ERD (dus zes ERDish-zinnen). Klap daarna de uitwerking hieronder open om je zinnen te controleren.
Oplossing van Opgave 1
Iedere klant plaatst nul of meer bestellingen.
Iedere bestelling is geplaatst door precies één klant.
Iedere bestelling omvat één of meer bestelregels.
Iedere bestelregel zit in precies één bestelling.
Iedere bestelregel gaat over precies één product.
Ieder product zit in nul of meer bestelregels.