Autor Zpráva
Cipísek055
Profil *
Dobrý den,

chtěl bych se zase zeptat na Vaší radu.
Zajímá mne, jak by jste ideálně řešili strukturu variant produktů v e-shopu.
Tedy, máme tabulku

products (hlavní info o produktu, cena a dále subproduct_id = 0 = hlavní produkt )
products_lang ( zde texty, jazyk ID, název produktu atd..(pro každý jazyk samostatný řádek) propojeno vždy s product_id
products_stock ( sklad produktu, zásoba...)
...

Teď mám tabulku s daty,

data_variants ( barva, rozměr, velikost.. )

A chci, abych mohl mít u produktu více možných variant, tedy u tabulky "products" vytvořím samostatný produkt s tím, že "subproduct_id" bude ID hlavního produktu.
Jen teď nevím, jak řešit např. že bude mít produkt např.

Varianta = VELIKOST = L
Varianta = BARVA - BÍLÁ
SKLAD varianty = - 6 KS

Tedy aby se následně v objednávce dali vypsat k výběru třeba "bílá / vel. S" a vyhodí mu to "skladem, není skladem, 2ks"..
A přemýšlím, jak to co nejlépe udělat databázově, aby šli kombinovat varianty se skladem.
Napadá mě staticky

products_variants = a sloupce product_id / barva / velikost / a vygenerovat to.
Jenže varianty jsou dynamické a musel bych po úpravých variant měnit sloupec (třeba přidám variantu "Typ" (dřevo, plast..) tak bych musel hodit ALTER TABLE na sloupec products_variants a přidat mu "typ" sloupec, což se mi nezdá jako ideální řešení...

Díky za pomoc :)
H13
Profil
Ahoj,

takovej ten základ je:

produkty (ID, jmeno, ...) - 1-Tričko, 2-Košile
produkty_atributy (ID atributu, ID produktu) - 1-Velikost ... 1, 2-Barva ... 1
produkty_atributy_volba (ID volby, ID atributu) - 1-L ... 1, 2-XL ... 1, 3-XXL ... 1, 4-Červená ... 2, 5-Modrá ... 2, 6-Žlutá ... 2

s tím, že tímhle vyřešíš situaci, kdy nebude docházet ke kombinaci atributů

Jakmile bude docházet ke kombinaci atributů:
Produkt: Tričko
Atributy: Velikost, Barva
Volby: (L, XL, XXL), (Červená, Modrá, Žlutá)

A k prodeji bude Produkt Tričko ve velikosti L a barvě Žlutá, pak budeš muset propojit i jednotlivé atributy a volby.
Cipísek055
Profil *
Nad tim jsem přemýšlel taky, ale nedomyslel jsem to, jak by vypadalo, abych zjistil počet na skladu

Tričko adidas, velikost L v modré barvě ...3kusy
Nebo boty nike, velikost 46, typ airmax, barva modré..že jich je 4 kusy
Keeehi
Profil
Ten hlavní produkt bude mít přiřazeny všechny varianty (aby systém věděl jaké všechny varianty existují i když by nebyly v databázi, ale není to nutnost).
Každá varianta produktu má svůj vlastní záznam. Na ně se vážou skladové zásoby.
Tudíž budeš mít záznam ID=8, parent ID=3, stock=38(ks)
No a v produkty_atributy_volba bude (1,8) které definuje danou variantu trička jako L a (5,8) což zase říká, že ta varianta je modrá.
Cipísek055
Profil *
Vytvořil jsem si návrh/náhled, jak zatím chápu design tabulek s příklady.
Můžete mi prosím pomoct se správným navedením ?

Zajímala by mě taky funkce, pokud ovládáte PHP nebo příkaz v MySQL
Něco, jak by vypadalo zjištění počtu kusů např. pro to tričko.
Stále v tom plavu :/ , díky všem

varianty
____________________________________________
ID NAZEV

1 - BARVA
2 - VELIKOST

varianty_data
____________________________________________
ID ID_VARIANTY NAZEV

1 - 1 - ČERNÁ
2 - 1 - MODRÁ
3 - 1 - ZELENÁ
4 - 2 - 40
5 - 2 - 36
6 - 2 - 38

produkty
____________________________________________
ID SUBCATEGORY_ID NAZEV POPIS

//subcategory_id = "varianta" produktu, která může mít komplet vlastní parametry/cenu..ať nevytvářím zbytečně další stejnou tabulku ?

// 1 - 0 - Boty nike VZ - Krásné super boty
// 7 - 1 - Subboty nike Airmax VZ - Krásné super boty airmax


produkty_sklad
____________________________________________
ID ID_PRODUKTU ID_SKLADU AMOUNT

// 1 - 1 - 1 - 50 (50ks)
// 1 - 7 - 1 - 20 (20ks)


produkty_varianty
____________________________

ID ID_PRODUKTU ID_VARIANTY

1 - 7 - 1
2 - 7 - 2


produkty_varianty_data
____________________________

ID ID_PRODUKTU ID_VARIANTY_PRODUKTU ID_VARIANTY_DATA

1 - 7 - 1 - 2 (modrá)
2 - 7 - 2 - 5 (vel. 36)
Cipísek055
Profil *
Neporadil by někdo ?
H13
Profil
Ještě tam je problém v tom, že atributy můžeš kombinovat nekonečněkrát - tedy můžeš mít třeba 10 atritubů a všechny je můžeš kombinovat. Pak je otázka, jestli není lepší každou kobminaci ukládat pod nějakým speciálním hashem?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: