[SQL] Opbouw database, hoe?

Pagina: 1
Acties:
  • 211 views sinds 30-01-2008
  • Reageer

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10-2025
Hoi,

ik ben bezig met een online order-systeem voor een bedrijf. Nu had ik een vraag over hoe ik het beste mijn database kan inrichten.

Ik heb:
  • klanten
    • id
    • naam
    • btwnr
  • producten
    • id
    • naam
    • prijs
Het probleem is dat de prijs van producten verschilt per klant. Mijn vraag is: hoe kan ik het beste de tabellen inrichten? Mijn voorstel:
  • klanten-tabel
  • producten-tabel (zonder prijs)
  • tabel die prijs koppelt aan producten-id en klanten-id
Die derde tabel wordt wel errug lang en smal zo (bijv. 100 producten, 100 klanten = 10.000 rows). Is dat een probleem? Of moet ik de tabellen anders inrichten?

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je hebt het goed idee :)

Er zijn nog wel andere oplossingen gebruikelijk (zoals een standaard prijs, en dan juist weer kortingen etc) maar je idee van een koppeltabel met daarin de specifieke prijs voor een klant/productcombinatie is goed. 10.000 rijen is echt peanuts.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 15-02 11:37

Salandur

Software Engineer

je krijgt natuurlijk ook orders:
order
- id
- klantid
- korting
- datum

met orderregels:
orderregel
- id
- orderid
- productid
- prijs (per stuk)
- aantal

op deze manier heb je een redelijk completer systeem, omdat je nu kan zien wat een klant op een bepaald moment heeft besteld en ook per product wat de klant ervoor heeft betaald (de prijs op dat moment)

Assumptions are the mother of all fuck ups | iRacing Profiel


  • Pascal Saul
  • Registratie: Augustus 2001
  • Laatst online: 07-07-2025
Ik zou de prijzen on the fly uitrekenen dus met een korting werken.

Dat ligt er natuurlijk ook aan hoe vaak prijzen worden geupdate. Als je met korting werkt hoef je eenmalig de korting te veranderen en het systeem doet de rest.

Aan de andere kant als je ze los opslaat kan je deze incidenteel wijzigen. Maar die vraag kan je het beste aan de klant stellen :)

Je zou zelfs nog alle prijzen opslaan en dat een update query doen als je de korting veranderd. Wel ben je dan de incidentele prijzen kwijt maar is wel iets flexibeler ;)

[ Voor 20% gewijzigd door Pascal Saul op 20-07-2006 10:29 ]


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 12-02 12:22
Hou rekening met het feit dat prijzen kunnen wijzigen, maar dat bestaande/oude orders tegen de op dat moment geldende prijs bewaard moeten worden. Zoals Salandur voorstelt dus.

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10-2025
@P_de_B
10.000 rijen is echt peanuts
Oke. Wanneer wordt het oppassen geblazen? 100.000 rijen? 1.000.000 rijen? Heb zelf tot nu toe alleen nog maar een CMSje gemaakt, en die kwam niet boven de 1000 rijen uit...

@Salandur

Klopt, er zitten natuurlijk nog meer tabellen in het systeem. Wilde het evenwel zo simpel mogelijk houden hier i.v.m. de vraag.

@alle vier

Bedankt voor jullie reacties! _/-\o_

Dat van die korting is natuurlijk wel makkelijker, maar volgens mij verschilt de korting weer per product. Ga ik idd aan de klant vragen.

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Rekcor schreef op donderdag 20 juli 2006 @ 10:30:
@P_de_B


[...]

Oke. Wanneer wordt het oppassen geblazen? 100.000 rijen? 1.000.000 rijen? Heb zelf tot nu toe alleen nog maar een CMSje gemaakt, en die kwam niet boven de 1000 rijen uit...
Ligt heel erg aan de software, de belasting, de hardware, de sql code, de indexen etc etc. Maar ook over een paar honderduizend rijen zou ik me geen zorgen maken.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Harmen1975
  • Registratie: Juli 2002
  • Laatst online: 17-11-2025
Nog een kleine hint: neem audit-kolommen op in je tabellen.
Altijd handig om (achteraf) te zien wie welk record heeft ingevoerd / gemuteerd.

If you don't succeed at first, redefine succes.


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Salandur schreef op donderdag 20 juli 2006 @ 10:21:
je krijgt natuurlijk ook orders:
order
- id
- klantid
- korting
- datum

met orderregels:
orderregel
- id
- orderid
- productid
- prijs (per stuk)
- aantal

op deze manier heb je een redelijk completer systeem, omdat je nu kan zien wat een klant op een bepaald moment heeft besteld en ook per product wat de klant ervoor heeft betaald (de prijs op dat moment)
Moet je dan geen koppeling maken tussen een order en de orderregels? :?

[ Voor 14% gewijzigd door CH4OS op 20-07-2006 10:55 ]


  • lier
  • Registratie: Januari 2004
  • Laatst online: 18:24

lier

MikroTik nerd

GJ-tje schreef op donderdag 20 juli 2006 @ 10:50:
[...]
Moet je dan geen koppeling maken tussen een order en de orderregels? :?
Waarvoor denk je dat het orderid opgenomen is in de orderregels tabel !?

Eerst het probleem, dan de oplossing


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

lier schreef op donderdag 20 juli 2006 @ 10:52:
Waarvoor denk je dat het orderid opgenomen is in de orderregels tabel !?
Ghehehe, dat is waar ook... Tis nog vroeg in de morgen zullen we maar zeggen :z

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10-2025
Moeders, wat een hulp krijg ik op deze ochtend! Hoef helemaal niet meer zelf na te denken :*).

Bedankt allemaal!
Pagina: 1