[DB] Shop items met opties

Pagina: 1
Acties:

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ik ben nu bezig met een shop in PHP/MySQL (:z ;))
Maar nu ben ik nog niet helemaal uit over het database ontwerp voor de produkten. Ik wil graag dat produkt-types meerdere opties hebben, bijvoorbeeld

Herenschoen
Kleur -> Zwart/Bruin/Rood
Maat -> 40/41/42/43/44/45

De opties alsmede de waardes moeten variabel zijn en op te geven door de eigenaar.

Voorwaarde moet dus zijn dat elke combinatie een apart produktID krijgt.

Ik had eerst het volgende bedacht, bij de keuze worden de selectie schermen gegeven. Daarna worden de optie-waardes toegevoegd aan de typenaam en aan de hand daarvan wordt het produkt gezocht.
Alleen vind ik dit een beetje lelijke oplossing en ook niet zo stabiel, immers moet je goed afspreken in welke volgorde de opties moeten volgen en is het lastig onderhoudbaar als later meerder opties of optie-waardes worden toegevoegd.

Voor de duidelijkheid:
bij het invoeren van een produkttype worden alle mogelijke produkten gegenereerd (aan de hand van de opties). De kunst is dan dit produkt weer terug te vinden wanneer een klant bepaalde waardes selecteert bij het kopen van het produkt.

Als iets onduidelijk is, vraag het dan maar ;)

De vraag is dus, hoe zouden jullie dit systeem ontwerpen in de database?

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:23

Pelle

🚴‍♂️

Op donderdag 20 december 2001 01:38 schreef Orphix het volgende:
De opties alsmede de waardes moeten variabel zijn en op te geven door de eigenaar.
Klinkt wel als een leuk probleempje :)
Maar wat moet de eigenaar precies op kunnen geven? De verschillende opties snap ik, maar moet hij ook zelf het onderscheidende attribuuttype op kunnen geven?

Oftewel: is er vooraf bepaald dat er optioneel te kiezen is uit kleur, maat en grootte, of moet de eigenaar daar zelf ook nog 'soort veters' en 'duurzaamheid zool' aan toe kunnen voegen. Ik heb het idee dat je dat laatste bedoeld, en dat wordt dan best lastig..

Het kan wel, maar dan krijg je een tabel met 3 sleutelattribuuttypen.

Ik zou een tabel 'soorten' toevoegen, en een tabel 'opties'. Ik neem aan dat je een product al in iets als een productgroep hebt toegevoegd?

Dan worden dit ongeveer je tabellen (tering wat een werk om die dingen in te kloppen :) ):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
+---------------------------------+
| PRODUCT                |
+----+--------------+-------------+
| id | productgroep | naam    |
+----+--------------+-------------+
| 1  | 1        | herenschoen |
| 2  | 1        | sportschoen |
| 3  | 2        | mp3-speler  |
+----+--------------+-------------+

+---------------+
| PRODUCTGROEP  |
+----+----------+
| id | naam     |
+----+----------+
| 1  | schoenen |
| 2  | audio    |
+----+----------+

+---------------+
| SOORT    |
+----+----------+
| id | naam     |
+----+----------+
| 1  | kleur    |
| 2  | maat     |
| 3  | geheugen |
+----+----------+

+--------------------------------+
| OPTIES                 |
+-----------+---------+----------+
| productid | soortid | optie    |
+-----------+---------+----------+
| 1    | 1   | Zwart    |
| 1    | 1   | Bruin    |
| 1    | 1   | Rood     |
| 1    | 2   | 40    |
| 1    | 2   | 41    |
| 1    | 2   | 42    |
| 1    | 2   | 43    |
| 1    | 2   | 44    |
| 2    | 1   | Zwart    |
| 2    | 1   | Paars    |
| 3    | 1   | Metallic |
| 3    | 1   | Aqua     |
| 3    | 3   | 64mb     |
| 3    | 3   | 128mb    |
+-----------+---------+----------+

Je kunt nu een selectie maken van bijvoorbeeld alle schoenen. Vervolgens kijk je in je opties-tabel of er producten zijn in die productgroep, die ook in die opties-tabel staan. Zo ja, dan zijn er dus selectie-criteria waarop je selectie verfijnd kan worden, en dan haal je dus de bijbehorende soort-naam op, en alle opties die die soort kan hebben.

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op donderdag 20 december 2001 02:44 schreef Pelle het volgende:
Oftewel: is er vooraf bepaald dat er optioneel te kiezen is uit kleur, maat en grootte, of moet de eigenaar daar zelf ook nog 'soort veters' en 'duurzaamheid zool' aan toe kunnen voegen. Ik heb het idee dat je dat laatste bedoeld, en dat wordt dan best lastig..
Ja dat laatste bedoel ik dus :)
Dan worden dit ongeveer je tabellen (tering wat een werk om die dingen in te kloppen :) ):
Bedankt alvast voor de tijd en moeite die je erin hebt gestoken! :)
Je kunt nu een selectie maken van bijvoorbeeld alle schoenen. Vervolgens kijk je in je opties-tabel of er producten zijn in die productgroep, die ook in die opties-tabel staan. Zo ja, dan zijn er dus selectie-criteria waarop je selectie verfijnd kan worden, en dan haal je dus de bijbehorende soort-naam op, en alle opties die die soort kan hebben.
Ok, dit begrijp ik. Alleen wat ik eigenlijk wil is dat elke 'soort' zijn eigen product id heeft. Dus als de shop eigenaar de orders nakijkt hij verschilt ziet tussen herenschoen zwart en herenschoen bruin. Het liefst zou ik ze dus verschillende product id's geven.

Maar misschien dat ik dat idee maar moet laten varen en dat ik gewoon elk type product een id geef en dan bij het order overzicht een veld 'opties' waarbij ik de opties weergeef.
Toch vind ik dit een minder mooie oplossing omdat het in feite wel om verschillende produkten gaat (<-- wat handig kan zijn bij voorraad berekeningen)

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:23

Pelle

🚴‍♂️

Op donderdag 20 december 2001 02:53 schreef Orphix het volgende:
Ok, dit begrijp ik. Alleen wat ik eigenlijk wil is dat elke 'soort' zijn eigen product id heeft. Dus als de shop eigenaar de orders nakijkt hij verschilt ziet tussen herenschoen zwart en herenschoen bruin. Het liefst zou ik ze dus verschillende product id's geven.
Als je in de tabel 'soort' nou gewoon ook nog even de productID meegeeft van het bijbehorende product, dan ben je er toch?
Heeft de eigenaar overigens niet al bestaande artikel-codes? Zo ja, dan moet je die natuurlijk overnemen...

/edit
In principe ligt die koppeling er ook al in de tabel 'opties'...

Dus of ik zie iets over het hoofd, of we praten langs elkaar heen :)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Nou het principe is heel simpel (ik werk btw niet voor een specifieke winkelier).
Je hebt in het magazijn:
2 Rode herenschoenen maat 40
2 Zwarte herenschoenen maat 41

Kijk je hebt nu 2 produkten, toch?
Maar in dit db model kan je maar 1 produkt onderscheiden, hoogstens erbij vermeld de opties. Ik zoek dus een manier om dit mooi op te lossen.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:23

Pelle

🚴‍♂️

Ik snap geloof ik wat je bedoelt, maar ik vind het onzinnig. Toevallig heb ik zelf een aantal jaren als bijbaantje in een schoenenzaak gewerkt, dus ik weer er inmiddels alles van :D

Een product-id was daar zo opgebouwd: ss.k.iii
ss is de soort: 12 een lage herenschoen, 18 een hoge herenschoen, 22 een lage damesschoen, 24 een pump, 29 een laars, enz.
k is de kleur: 1 is zwart, 2 is bruin, 3 is blauw, 4 is rood, enz.
i is een indentificerend id binnen de 'productgroep'.

Een 12.1.433 is dus een zwarte lage herenschoen. Als iemand wou weten of die er ook in het bruin was, dan ging je op zoek naar de 12.2.433. Of in een blauw hoog model, en dan nam keek je naar de 18.3.433. Zoiets zit heel logisch in elkaar, en het bevat alle belangrijksteonderscheidende attribuuttypen.

Zo zou je in mijn voorbeeld een artikel-nummer toch ook kunnen vormen?

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ja inderdaad daar heb ik ook over nagedacht (Waar ik heb gewerkt gebruikten ze nummers als 100A, 100B, enz). Nu is dit zeer specifiek maar je zou een systeem kunnen maken van:
nummer.optie1.optie2
in het geval van 2 opties.
Maakt het allemaal wel veel gemakkelijker (voor beide partijen :))
FF kijken of ik dat een beetje kan uitwerken. Thnx voor het meedenken :)

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:23

Pelle

🚴‍♂️

Op donderdag 20 december 2001 03:28 schreef Orphix het volgende:
Thnx voor het meedenken :)
Ach, je moet wat he, zo laat op de avond (40gig aan data op cd zetten bijvoorbeeld en volgende week een keiharde format eroverheen rossen 8-)).

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Helaas blijft dit slechts een produkt representatie, ipv een daadwerkelijk reeel produkt (dus niet mogelijk om bij te houden hoeveel er van verkocht is, hoeveel nog in voorraad, etc).

Niemand verder nog ideeen hierover?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:13

Crazy D

I think we should take a look.

Op donderdag 20 december 2001 19:19 schreef Orphix het volgende:
Helaas blijft dit slechts een produkt representatie, ipv een daadwerkelijk reeel produkt (dus niet mogelijk om bij te houden hoeveel er van verkocht is, hoeveel nog in voorraad, etc).

Niemand verder nog ideeen hierover?
Als je op die manier met soort.optie1.optie2 je artikelcodes opbouwt, is het natuurlijk vrij simpel om een extra tabel te nemen voor je voorraad. Beetje afhankelijk van hoe uitgebreidt je dat wil doen natuurlijk. Meest simpele vorm is natuurlijk bij het artikel een veldje voorraad zetten, in de meest uitgebreidde vorm kun je heel specifiek bijhouden hoeveel je er echt in voorraad hebt, hoeveel er in bestelling staan (orders), hoeveel de winkelier er in bestelling heeft en verwacht binnen x-dagen binnen te krijgen, enz. Bedenk eerst hoe ver je daarin wilt gaan.

Als ik niet nadenk kan ik best een hoop wilde ideeën uitkramen maar moet ik wel weten waar je grens ligt :+

Exact expert nodig?

Pagina: 1