Klopt dit DB ontwerp een beetje?
Ik ben aan het proberen een database te normaliseren / te ontwerpen. Nu heb ik het volgende ontwerp gemaakt.
Ik zou graag eens wat commentaar ontvangen, want ik begrijp het normaliseren denk ik wel, maar de verbindingen van de tabellen nog niet helemaal.
Ter verduidelijking:
tabellen:
ditbedrijf - het bedrijfsprofiel van eigenaar
users - gebruikerstabel
rechten - hier komen de rechtencodes in te staan gekoppeld aan user
koppeltabel persoonlijk-zakelijk - koppelt een persoon aan een bedrijf of andersom
contact_persoon - privegegevens
contact_zakelijk - zakelijke / bedrijfsinformatie
factuur - hier staan gegevens opgeslagen per factuur
koppeltabel factuur - koppelt factuur aan bedrijf of persoon
btw - kopppelt een btw percentage aan een factuur.
Dus ik ben benieuwd, wat heb ik er van gebakken?
Groeten!
Niels
Gewijzigd op 07/04/2011 11:39:39 door Niels Hermans
Bijv. factuur-producten-prijs.
Factuur heeft meerdere producten, een product kan op meerdere facturen voorkomen, maar de prijs is gekoppeld aan dat specifieke factuur (immers, de prijs van het product kan veranderen, maar de prijs op je al verzonden facturen blijft gelijk)
facturen
- id
- factuur_datum
- verval_datum
-...
producten
- id
- naam
factuur_producten
- id
- factuur_id
- product_id
- prijs
Je factuur heeft dan meerdere factuur_producten eraan gekoppeld (factuur.id = factuur_producten.factuur_id) en aan ieder van die factuur_producten is een prijs en een product gekoppeld (factuur_producten.product_id = producten.id).
Probeer dit eerst eens met de telefoonnummers (ieder telefoonnummer heeft één contactpersoon, een contactpersoon kan meerdere telefoonnummers hebben)
workbench. Wanneer je ERD klaar is, kan je hem met een aantal klikken naar SQL exporteren.
Wat misschien ook een leuke tip is: Design je ERD in het programma Gewijzigd op 07/04/2011 12:26:58 door Niels K
Gewijzigd op 07/04/2011 12:36:42 door John D
Bedankt iedereen!
Ik heb een aantal nieuwe koppeltabelletjes gemaakt om dubbele opslag te voorkomen. Zouden er nog dingen verbeterd kunnen worden?
Vergeet ik iets? Hieronder staat mijn verbeterde/vernieuwde versie:
Gewijzigd op 11/04/2011 10:20:09 door Niels Hermans
EDIT:
Waarom heb je een aparte klasse email? Een email hoort toch bij een user, laat hem dan ook onder user vallen.
Gewijzigd op 11/04/2011 11:16:06 door vdleije .
bedankt voor de tip over de rechten,
De aparte klasse email, is omdat een contact, zakelijk of persoonlijk, wellicht meerdere email adressen kan hebben. en dit dus zo af wil vangen.
mail queue programmeren?
Kan je niet richting een Dus moet ik nog steeds een duidelijke scheiding tussen een of meerdere email adressen van een persoon en/of bedrijf kunnen maken.
Toch? of begrijp ik "mail queue" verkeerd?
Er zijn een aantal redenen om voor een mail queue te kiezen:
- Statistieken / bewijs (Wat voor mails, wanneer welke mail, naar wie welke mail etc)
- Geen problemen meer dat gebruikers foutmeldingen krijgen over email problemen.
Je kan dan alles via bijvoorbeeld een cron laten uitvoeren en laten verzenden.
Dus dat zou betekenen dat ik nog een extra tabel zou maken, welke alle emails die uitgaan opslaat en onverzonden mails bijvoorbeeld aan het einde van de dag via de cron laat verzenden ? Klinkt wel interesant. Ik ga er eens over nadenken.
Daarnaast is het niet één tabel maar meerdere. Want denk eens aan templates en aan template versies..
Wellicht beter om als er nog tijd over is dit te gaan implementeren.