[acces]Hoe db ontwerpen webshop?

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

  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
Ik ben bezig op mn stage met een webshop (acces/asp) gewoon puur voor lol geen opdracht ofzo :) Aangezien ik nog niet zo heel veel ervaring heb met acces enzo wou ik ff advies vragen. Ik heb al wel keer een veiling site voor school gemaakt met een db erachter dus kan wel beetje overweg met asp/acces en omdat ik toch niks anders te doen heb kan ik net zo goed mezelf nog wat meer leren of acces/asp.

In die webshop komen dus pc onderdelen te staan nu zat ik te denken hoe ik de db ging maken en kwam ik tot 2 oplossingen:
1: Allemaal losse tabellen met categoriën.
- tblPrinters
- tblProcessors
- tblGeheugen
Ik dacht het voordeel hiervan is makkelijk bij te houden als je iets moet updaten en het nadeel elke tabel krijgt dan dezelfde kolomnamen wat weer beetje overbodg is (productID,type,merk,omschrijving,prijs,plaatje)
Nadeel daarbij is dat het productID uniek moet zijn dus in tblPrinters heeft een printer als productID 25 dan mag 25 in die andere tabellen niet meer voorkomen. Volgens mij kan je dat met relaties wel weer oplossen alleen in relaties leggen ben ik nou net weer niet zo goed :P

Dus zo kwam ik bij optie 2 :)
1 grote tabel met gewoon dezelfde kolomnamen + een kolomnaam "categorie."
Alleen hier heb je weer nadeel dat je hele lijst moet door zoeken om een product te updaten dacht ik + dat het wel is langzaam kon worden of valt dat mee?

Dus als iemand mij advies kan geven of ik allemaal losse tabellen of 1 grote tabel moet gebruiken (of nog weer anders aanpakken) kan ik weer beetje verder prutsen.

  • Arnout
  • Registratie: December 2000
  • Laatst online: 21-08 21:42
1 tabel voor producten met daarin een vreemde sleutel naar een tabel voor de categorieën. :)

  • KeeZ
  • Registratie: Februari 2001
  • Laatst online: 25-04-2022

KeeZ

Deze plek is te koop.

tabel met diverse produktcode's (vreemde sleutels) dus Pxxxxx voor procs Gxxxxx voor geheugen en dan een tabel procs maken met daarin als primaire sleutel Pxxxxx en omschrijving en dergelijke als string...

dan krijg je dus dit idee:

produktID's Produkttable's
[compu1]
[P112227]-->[P112227-P4 boxed 3.06 GHz]
[G111114]-->[G111114-512 MB PC 3200 Dane Elec]

waarin het vetgedrukte sleutels zijn, en de pijltjes --> relaties voorstellen. Als je wil kan ik wel een standaard access opzetje maken....

Deze plek is te koop.


  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
Oke even voor duidelijkheid dus zeg maar optie 2 met de kolom categorie die dan dan de vreemde sleutel wordt en verwijst naar tblCategorien waar kolommen in staan met de categorie namen. Zodat je een van die categorieën kunt selecteren in de hoofdtabel als je iets toevoegd ?

Of snap ik het niet helemaal ?? :)

  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
KeeZ schreef op 11 February 2003 @ 11:08:
tabel met diverse produktcode's (vreemde sleutels) dus Pxxxxx voor procs Gxxxxx voor geheugen en dan een tabel procs maken met daarin als primaire sleutel Pxxxxx en omschrijving en dergelijke als string...

dan krijg je dus dit idee:

produktID's Produkttable's
[compu1]
[P112227]-->[P112227-P4 boxed 3.06 GHz]
[G111114]-->[G111114-512 MB PC 3200 Dane Elec]

waarin het vetgedrukte sleutels zijn, en de pijltjes --> relaties voorstellen. Als je wil kan ik wel een standaard access opzetje maken....
Deze snap ik niet helemaal zou je iets duidelijker of anders uit kunnen leggen of opzetje is ook oke. Maakt me niet uit :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Onze webshop DB (plus rest van de site ;)) ziet er als volgt uit:

Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/0103/blaat2.gif

Veel plezier ermee....

/edit/
Niet alle lijntjes lopen netjes naar de juiste velden in een tabel, maar daar moet je met enig DB inzicht toch in kunnen komen... Dus op het zicht klopt 'ie niet helemaal, maar technisch wel degelijk. (Zie als voorbeeld de foreign key fb_ft_id)...

[ Voor 47% gewijzigd door RobIII op 11-02-2003 11:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
RobIII schreef op 11 februari 2003 @ 11:20:
Onze webshop DB (plus rest van de site ;)) ziet er als volgt uit:

[afbeelding]

Veel plezier ermee....

/edit/
Niet alle lijntjes lopen netjes naar de juiste velden in een tabel, maar daar moet je met enig DB inzicht toch in kunnen komen... Dus op het zicht klopt 'ie niet helemaal, maar technisch wel degelijk. (Zie als voorbeeld de foreign key fb_ft_id)...
Oke bedankt !! hij is wel heel uitgebreid enne met lijntjes is geen prob. Ik gaat ff kijken of wat mee kan.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je hebt eigenlijk alleen tbl_Products, tbl_ProductCats en tbl_Manufacturers nodig...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Stefke
  • Registratie: December 2000
  • Laatst online: 23-08 12:20
Zoals hierboven staat :) Je moet een autonummeringveld gebruiken voor de id van je produkt in tbl_products, die is altijd uniek en dat is de beste methode. Hiermee moet de database werken, deze id hoef je in principe dus zelf nergens te zien. Eventueel kun je dan voor jezelf nog een 2e identificatiecode waarmee je eventueel wat handiger kunt zoeken.
Daarnaast moeten inderdaad in de tabel met producten een productgroepcode komen met een relatie naar de tbl_productcats (die weer een autonummering hebben als unieke ID)

Jouw eerste methode druist tegen alle "regels" voor een efficiente database in dus dat idee zou ik laten vallen, heeft alleen maar nadelen.

  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
stefijn schreef op 11 February 2003 @ 11:41:
Zoals hierboven staat :) Je moet een autonummeringveld gebruiken voor de id van je produkt in tbl_products, die is altijd uniek en dat is de beste methode. Hiermee moet de database werken, deze id hoef je in principe dus zelf nergens te zien. Eventueel kun je dan voor jezelf nog een 2e identificatiecode waarmee je eventueel wat handiger kunt zoeken.
Daarnaast moeten inderdaad in de tabel met producten een productgroepcode komen met een relatie naar de tbl_productcats (die weer een autonummering hebben als unieke ID)

Jouw eerste methode druist tegen alle "regels" voor een efficiente database in dus dat idee zou ik laten vallen, heeft alleen maar nadelen.
Dat die niet al te best was had ik al zon id van :)
Maar om even terug te komen op die tbl_productcats dit is alleen om spelfouten te voorkomen of niet? want je kunt toch ook gewoon invullen bij het aanmaken van een nieuw product in welke categorie hij moet komen??
Maar waarom moet hij dan autonummering hebben ??

[ Voor 4% gewijzigd door Struis op 11-02-2003 11:58 ]


  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
RobIII schreef op 11 februari 2003 @ 11:35:
Je hebt eigenlijk alleen tbl_Products, tbl_ProductCats en tbl_Manufacturers nodig...
Ja dat klopt maar bij tbl_Manufacturers staat nog prod_Online en prod_Deleted mag ik vragen waar die voor gebruikt worden ??

  • Stefke
  • Registratie: December 2000
  • Laatst online: 23-08 12:20
Autonummering verzekerd je van een unieke code. Het hoeft niet, je kunt eventueel ook handmatig een code ingeven, maar over het algemeen is een autonummering het gemakkelijkst.
Die tbl_productcats zou gemaakt moeten worden wegens de normalisatiemethode, die zegt o.a. dat identieke gegevens niet op meer dan 1 plek meoten voorkomen. Maw, een produktcategorie "harddisks" moet niet in elke regel vermeld worden, maar in een apart tabel met een link.
Stel je wil je categorien hernoemen? Dat kun je doen door in al je produkten de categorie te wijzen (maw honderden keren de produktcategorie wijzigen), of middels een aparte tabel de categorie 1x wijzigen en via de link blijft alles zoals het moet.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Struis schreef op 11 February 2003 @ 12:00:
[...]


Ja dat klopt maar bij tbl_Manufacturers staat nog prod_Online en prod_Deleted mag ik vragen waar die voor gebruikt worden ??
Prod_online: als ik een product niet op de site wil hebben issie 0, anders 1.
Prod_deleted: Ik delete geen records, ik markeer ze als deleted. Dat doe ik omdat ik in b.v. mijn orders wel nog kan verwijzen naar een product dat verwijderd is. Zodoende kan ik oude orders toch nog uitdraaien als dat nodig mocht zijn.

Doe je dat niet dan moet je b.v. alle orders waarin naar dat product wordt verwezen aanpassen om je DB consistent te houden. Hetzelfde geld voor manufacturers en eigenlijk zo'n beetje alles wat je hierboven ziet.

In het cms van de site zie ik dus producten die deleted zijn nooit meer terug en moet ik ze opnieuw aanmaken als ik ze weer wil hebben (of ik moet de DB in duiken }) ). Ik zie WEL offline producten, zodat ik ze kan aanpassen of "klaarzetten" voordat ik ze op de site gooi....

/edit/
Ook sla ik bijvoorbeeld de prijzen van de producten in de order op, op het moment dat de order wordt geplaatst. Zodoende kan ik die order toch voor de "afgesproken" prijs leveren, en de prijs aanpassen van het product zonder dat de order daar "last" van heeft.

[ Voor 44% gewijzigd door RobIII op 11-02-2003 12:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
Oke iedereen bedankt voor info en uitleg ! ik gaat ff lekker prutsen.

  • Fatalharry
  • Registratie: Juni 2001
  • Laatst online: 23-08 23:46
Is het misschien niet handig, als je begint met zoiets, eens te kijken wat voor andere interresante mogelijkheden er zijn.

er zijn op het net zat voorbeelden te vinden van complete asp/php webshop's

  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
fatalharry schreef op 11 February 2003 @ 12:23:
Is het misschien niet handig, als je begint met zoiets, eens te kijken wat voor andere interresante mogelijkheden er zijn.

er zijn op het net zat voorbeelden te vinden van complete asp/php webshop's
Neej want zelf maken is leuker dan een compleet voorbeeld te kopieren van het net. Alleen een opstapje is makkelijk om te beginnen.

[ Voor 11% gewijzigd door Struis op 11-02-2003 12:34 ]


  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
stefijn schreef op 11 February 2003 @ 12:02:
Autonummering verzekerd je van een unieke code. Het hoeft niet, je kunt eventueel ook handmatig een code ingeven, maar over het algemeen is een autonummering het gemakkelijkst.
Die tbl_productcats zou gemaakt moeten worden wegens de normalisatiemethode, die zegt o.a. dat identieke gegevens niet op meer dan 1 plek meoten voorkomen. Maw, een produktcategorie "harddisks" moet niet in elke regel vermeld worden, maar in een apart tabel met een link.
Stel je wil je categorien hernoemen? Dat kun je doen door in al je produkten de categorie te wijzen (maw honderden keren de produktcategorie wijzigen), of middels een aparte tabel de categorie 1x wijzigen en via de link blijft alles zoals het moet.
Maar als je dan bijvoorbeeld een nieuw product wil toevoegen in de tbl_producten dan moet je dus een id opgeven die overeen komt met het id dat gekoppelt is aan juiste fabrikant naam in de tbl_fabrikanten. Is dat niet onhandig want dan moet je telkens kijken welk id aan welke fabrikant gekoppelt is.
Of zie ik dat verkeerd ??? :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Koop maar eens een boekje over databases voordat je hiermee verder gaat. Je snapt het idee achter een DB niet helemaal vrees ik... :P

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Struis
  • Registratie: Juni 2001
  • Laatst online: 23-06 18:17

Struis

Tis wat he.....

Topicstarter
RobIII schreef op 11 February 2003 @ 15:12:
Koop maar eens een boekje over databases voordat je hiermee verder gaat. Je snapt het idee achter een DB niet helemaal vrees ik... :P
hehehe nou tot nu toe gaat het redelijk hoor :P maar kheb beetje hekel aan boeken door lezen pruts liever een uur dan dat ik uur in boek zit te lezen :)

Verwijderd

Struis schreef op 11 februari 2003 @ 16:52:
[...]


hehehe nou tot nu toe gaat het redelijk hoor :P maar kheb beetje hekel aan boeken door lezen pruts liever een uur dan dat ik uur in boek zit te lezen :)
Dat gaat je met DB niet helemaal lukken, als je niet normaliseert dan loop je later vaak tegen problemen aan. Er staan ook goede tutorials op internet, en vooral NIET voor elke productgroep een aparte tabel maken, dat is een doodzonde! :)

  • Stefke
  • Registratie: December 2000
  • Laatst online: 23-08 12:20
Struis schreef op 11 februari 2003 @ 14:11:
[...]


Maar als je dan bijvoorbeeld een nieuw product wil toevoegen in de tbl_producten dan moet je dus een id opgeven die overeen komt met het id dat gekoppelt is aan juiste fabrikant naam in de tbl_fabrikanten. Is dat niet onhandig want dan moet je telkens kijken welk id aan welke fabrikant gekoppelt is.
Of zie ik dat verkeerd ??? :)
Nee, want je gaat natuurlijk in een gebruiekrsscherm een net menutje maken waarbij gebruikers bij het aanmaken van een nieuw produkt netjes kunnen kiezen uit de beschikbare fabrikanten :)
Pagina: 1