Normen voor MySQL tabelnamen (naming conventions): verschil tussen 1:m en m:n relaties?

Omdat ik de tabelrelaties niet vastleg op database niveau, maar alleen in het ontwerp aangeef, wil ik graag uit de namen van relatietabellen laten blijken of het een 1:m, of een m:m relatie betreft.

Nu gebruik ik voor allebei underscores:

Customers_orders (geeft aan welke bestellingen uit tabel orders bij welke klant hoort)
Customers_cities (geeft aan in welke stad een klant is gehuisvest).

Het eerste geval is een 1:m tabel, want een order hoort bij 1 klant. Het 2e is een m:m tabel, want een klant kan in meerdere steden gehuisvest zijn, maar een stad kan ook meerdere klanten huisvesten.

Dat is aan de naamgeving niet te zien. Heeft hier iemand een oplossing voor?

Weet jij het antwoord?

/2500

Je zou voor de gevallen waar het een 1:m relatie betreft, voor het deel waar de "1" voor staat, een enkelvoudig woord kunnen gebruiken. In jouw geval zou "customerS_orders" dan veranderen in "customer_orders".

Voor n:m tabellen heb je altijd koppeltabellen nodig. Soms kun je die een goede zinvolle naam geven, bijvoorbeeld meerdere studenten volgen meerdere vakken. De koppel tabel zou je dan "klas" kunnen noemen waarin een student_id en vak_id aan elkaar zijn gekoppeld. Als dat niet gaat kies ik vaak voor koppeltabellen een 2 (to) in de naamgeving bijvoorbeeld een vak zou dan student2course. Wat betreft parent child (1:n) kies ik ook soms voor een s. Probleem is dat vaak zo'n detail tabel ook weer een parent tabel is (bijvoorbeeld een order met vele producten). Vaak blijft het toch bij het noemen van de foreign key column.

Simpel: Als orders bij 1 klant horen noem je de relatie customer_orders (en niet customers)

Stel zelf een vraag

Ben je op zoek naar het antwoord op die ene vraag die je misschien al tijden achtervolgt?

/100