[HULP] Is dit goed qua opzet voor database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Christiaan de kleine

christiaan de kleine

07/07/2011 23:37:12
Quote Anchor link
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.
 
PHP hulp

PHP hulp

28/03/2024 10:41:01
 
Marco PHPJunky

Marco PHPJunky

07/07/2011 23:43:11
Quote Anchor link
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
Gewijzigd op 07/07/2011 23:45:43 door Marco PHPJunky
 
Christiaan de kleine

christiaan de kleine

07/07/2011 23:45:54
Quote Anchor link
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.
Gewijzigd op 07/07/2011 23:53:11 door christiaan de kleine
 
Marco PHPJunky

Marco PHPJunky

07/07/2011 23:57:20
Quote Anchor link
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
 
Christiaan de kleine

christiaan de kleine

07/07/2011 23:59:15
Quote Anchor link
maar verder nog dingen die je eruit zou halen of niet.

ik zal iig betaling_id erbij zetten nog
 
Marco PHPJunky

Marco PHPJunky

08/07/2011 00:07:21
Quote Anchor link
heb je al eens een databases gebouwd of is dit je eerste als ik vragen mag ?
of in sql ?
 
Christiaan de kleine

christiaan de kleine

08/07/2011 00:12:01
Quote Anchor link
al meerdere

en klopt het dat ik foreign keys in pma kan aaleggen, dus geen enkele relatie tussen tabellen
 
The Force

The Force

08/07/2011 02:10:16
Quote Anchor link
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!
 
Christiaan de kleine

christiaan de kleine

08/07/2011 12:29:13
Quote Anchor link
oke dankje the force.

Kan ik in phpmyadmin ook relaties leggen tussen tabellen of niet? zo ja, hoe...
 
The Force

The Force

08/07/2011 15:00:07
Quote Anchor link
Niet via de interface. Je kan natuurlijk wel SQL intypen. Je kan daarmee bijvoorbeeld een foreign key aanmaken.
 
Christiaan de kleine

christiaan de kleine

08/07/2011 15:15:27
Quote Anchor link
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???
 
The Force

The Force

08/07/2011 16:01:18
Quote Anchor link
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.
 
Christiaan de kleine

christiaan de kleine

08/07/2011 16:34:17
Quote Anchor link
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?
 
Christiaan de kleine

christiaan de kleine

10/07/2011 17:22:37
Quote Anchor link
kan iemand mij hiermee helpen of niet?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.