[HULP] Is dit goed qua opzet voor database
Hallo,
Ik wil mijn eigen bedrijfje online beginnen, en zou ook graag database normalisatie willen beginnen. Hieronder mijn opzetje en daarbij de vraag aan jullie voor op- en aanmerkingen.
Tabel: Klanten
klant_id
klant_bedrijf
klant_naam
klant_adres
klant_postcode
klant_plaats
klant_land
klant_telefoon
klant_email
------------------------
Tabel: Factuur
klant_id
factuur_id
factuur_totaalprijs
factuur_datum
factuur_referentie
factuur_betaald
factuur_betaaldatum
------------------------
Tabel: Betalingen
factuur_id
betaling_bedrag
betaling_datum
------------------------
Het gaat hierbij dus om het feit dat je als klant een factuur hebt open staan en die kan dus betaald worden in 1 of meerdere keren.
Ik wil mijn eigen bedrijfje online beginnen, en zou ook graag database normalisatie willen beginnen. Hieronder mijn opzetje en daarbij de vraag aan jullie voor op- en aanmerkingen.
Tabel: Klanten
klant_id
klant_bedrijf
klant_naam
klant_adres
klant_postcode
klant_plaats
klant_land
klant_telefoon
klant_email
------------------------
Tabel: Factuur
klant_id
factuur_id
factuur_totaalprijs
factuur_datum
factuur_referentie
factuur_betaald
factuur_betaaldatum
------------------------
Tabel: Betalingen
factuur_id
betaling_bedrag
betaling_datum
------------------------
Het gaat hierbij dus om het feit dat je als klant een factuur hebt open staan en die kan dus betaald worden in 1 of meerdere keren.
waar zet je neer of de klant in 1 keer of meerde malen betaald ?
wat is je primaire key in de tabel factuur ?
maby 'mis' ik nog het kvk/btw nummer van het bedrijf (eventueel voor controlle)
en een status van een bedrijf
note bij een bedrijf
wat is je primaire key in de tabel factuur ?
maby 'mis' ik nog het kvk/btw nummer van het bedrijf (eventueel voor controlle)
en een status van een bedrijf
note bij een bedrijf
Gewijzigd op 07/07/2011 23:45:43 door Marco PHPJunky
wat zou je nog qua velden aanraden?
mijn primaire key in factuur zal denk ik klant_id zijn. maar weet niet of dat wel de beste keus is.
Toevoeging op 07/07/2011 23:50:15:
als je kijkt naar bedrijf, denk ik dat ik dan nog een tabel open:
Tabel: bedrijf
klant_bedrijf
bedrijf_id
bedrijf_adres
bedrijf_postcode
bedrijf_plaats
bedrijf_land
bedrijf_kvk
bedrijf_rekeningnummer
-----------------------------
Dan kan ik de tabel klanten ook aanpassen:
Tabel: klanten
klant_id
klant_bedrijf
klant_naam
klant_functie
klant_telefoon
klant_email
---------------------------
Terugkomend op je vraag: hoe ik invoer of er in 1 of meerdere keren betaald word.
dat gebeurt dus in de tabel factuur. als e van het zelfde factuur id betalingen zijn ingevoerd dan betekend het dus dat er in meerdere keren geld overgemaakt is.
mijn primaire key in factuur zal denk ik klant_id zijn. maar weet niet of dat wel de beste keus is.
Toevoeging op 07/07/2011 23:50:15:
als je kijkt naar bedrijf, denk ik dat ik dan nog een tabel open:
Tabel: bedrijf
klant_bedrijf
bedrijf_id
bedrijf_adres
bedrijf_postcode
bedrijf_plaats
bedrijf_land
bedrijf_kvk
bedrijf_rekeningnummer
-----------------------------
Dan kan ik de tabel klanten ook aanpassen:
Tabel: klanten
klant_id
klant_bedrijf
klant_naam
klant_functie
klant_telefoon
klant_email
---------------------------
Terugkomend op je vraag: hoe ik invoer of er in 1 of meerdere keren betaald word.
dat gebeurt dus in de tabel factuur. als e van het zelfde factuur id betalingen zijn ingevoerd dan betekend het dus dat er in meerdere keren geld overgemaakt is.
Gewijzigd op 07/07/2011 23:53:11 door christiaan de kleine
Sorry maar je Primaire key moet echt factuur_id zijn (in deze opzet) en klant_id is dan je Foreign Key
ook mis ik nog het id bij betalingen.
misschien is het makkelijk voor je om je er eerst nog wat meer over te lezen voordat je gelijk aan een factuur systeem begint waarin veel fout kan gaan
ook mis ik nog het id bij betalingen.
misschien is het makkelijk voor je om je er eerst nog wat meer over te lezen voordat je gelijk aan een factuur systeem begint waarin veel fout kan gaan
maar verder nog dingen die je eruit zou halen of niet.
ik zal iig betaling_id erbij zetten nog
ik zal iig betaling_id erbij zetten nog
heb je al eens een databases gebouwd of is dit je eerste als ik vragen mag ?
of in sql ?
of in sql ?
al meerdere
en klopt het dat ik foreign keys in pma kan aaleggen, dus geen enkele relatie tussen tabellen
en klopt het dat ik foreign keys in pma kan aaleggen, dus geen enkele relatie tussen tabellen
Ten eerste zou ik alle kolomprefixes weghalen. Het is redundant en nergens voor nodig. Ten tweede zou ik alle id's weghalen. Als je normaliseert dan kom je erachter dat bij klant "klant_bedrijf" of "klant_naam" (afhankelijk van je scenario, ik denk dat het "klant_bedrijf" is) je primary key is. Alleen als je geen identificerende kolom (of een groep van kolommen) hebt dan kan je id's gebruiken. O en als de groep te groot wordt (bijvoorbeeld de combinatie van 5 kolommen is uniek) dan zou je eventueel ook voor een id kunnen kiezen.
Verder ziet het ontwerp er wat betreft normalisatie er goed uit!
Verder ziet het ontwerp er wat betreft normalisatie er goed uit!
oke dankje the force.
Kan ik in phpmyadmin ook relaties leggen tussen tabellen of niet? zo ja, hoe...
Kan ik in phpmyadmin ook relaties leggen tussen tabellen of niet? zo ja, hoe...
Niet via de interface. Je kan natuurlijk wel SQL intypen. Je kan daarmee bijvoorbeeld een foreign key aanmaken.
weet je zo een code misschien, want wat ik ook probeer het werkt niet...
Toevoeging op 08/07/2011 15:24:11:
heb nu deze gebruikt:
ALTER TABLE bedrijf
ADD FOREIGN KEY (bedrijf_id) REFERENCES klanten(klanten_id);
maar waar kan ik controleren of deze nu idd gekoppeld is???
Toevoeging op 08/07/2011 15:24:11:
heb nu deze gebruikt:
ALTER TABLE bedrijf
ADD FOREIGN KEY (bedrijf_id) REFERENCES klanten(klanten_id);
maar waar kan ik controleren of deze nu idd gekoppeld is???
In het structuur tabblad zie je bij "Indexes" de index die bij de foreign key hoort. Als je je FK een goede naam geeft ("ADD FOREIGN KEY FK_VANTABEL_NAARTABEL (kolomnaam) enz.") dan zie je die daar ook terug.
Je kan natuurlijk ook een insert doen met een verkeerde waarde en dan kijken of de foreign key dan gaat klagen.
Je kan natuurlijk ook een insert doen met een verkeerde waarde en dan kijken of de foreign key dan gaat klagen.
dit staat bij structuur --> klanten momenteel:
Indexen:
Actie Sleutelnaam Type Unieke waarde Gecomprimeerd Veld Kardinaliteit Collatie Null Opmerking
klant_id BTREE Nee Nee klant_id 0 A
oftelwel sleutelnaam = klant_id
Type = BTREE
Unieke waarde = Nee
Gecomprimeerd = Nee
Veld = klant_id
Kardinaliteit = 0
Collatie = A
en bij bedrijf staat het zelfde en daar is dan sleutelnaam en veld = bedrijf_id
wat doe ik fout?
Indexen:
Actie Sleutelnaam Type Unieke waarde Gecomprimeerd Veld Kardinaliteit Collatie Null Opmerking
klant_id BTREE Nee Nee klant_id 0 A
oftelwel sleutelnaam = klant_id
Type = BTREE
Unieke waarde = Nee
Gecomprimeerd = Nee
Veld = klant_id
Kardinaliteit = 0
Collatie = A
en bij bedrijf staat het zelfde en daar is dan sleutelnaam en veld = bedrijf_id
wat doe ik fout?
kan iemand mij hiermee helpen of niet?




