[baza] shema večjezične trgovine z opcijami
 
blackmamba 12. dec 2011 21:16:56 Pridružen od:
4. mar 2008
559 objav
392 25 11
#1

Živjo,

malo za razmislek in za kakšno idejo/nasvet odpiram tole temo.

Spletnih trgovin je že veliko, zato delam jaz še eno :)



Funkcjonalnosti:

- večjezičnost,

- izdelek v več kategoirjah (ena kategorija je privzeta za breadcrumbse)

- proizvajalci

- opcije(atributi) izdelka, npr barva, velikost,....

- filtriranje izdelkov po kategorijah in iskanje glede na atribute

- različna cena, zaloga,.. glede na izbrano kombinacijo opcij



Tukaj je čisto osnovna, prva in precej okleščena verzija, kako naj bi baza zgledala. http://shrani.si/f/R/oZ/w2Jzqn5/capture.png



Primer podatkov:

product(artikel)

product2attribute(productid, attributeid, attributevalueid)

attribute(barva, velikost,..)

attribute_value(rdeca,rumena,S,M,L,XL,...)



Par zelo pomembni stvari, ki v tej shemi manjka:

- cena

- zaloga

- serijska št.

ob izbranih opcijah.



Vprašanje pa sledi:

Kako bi zapisali ceno, glede na to, da se lahko razlikuje glede na izbrano kombinacijo opcij.



Primer:

majica v rdeči barvi S = 9€

majica v zlati barvi S = 9€

majica v rdeči barvi M = 10€

majica v zlati barvi M = 15€



Torej, izbrana opcija ne more vedno povečati za fiksni ali procentualni znesek osnovne cene artikla.



Podobno vprašanje je, kako zapisati zalogo in serijske št. glede na izbrano kombinacijo večih opcij.



Edina ideja, ki mi pade na pamet je tabela vseh možnih permutacij pri urejanju vsakega artikla.



Primer:

velikost; barva; cena; serial; zaloga

S; rdeca; 9€; 123; 2

S; zlata; 9€; 123z; 0

M; rdeca; 10€; 1234; 0

M; zlata; 15€; 1234z; 3



Se spomni kdo kakšne drugačne rešitve?

Bi drugače zastavili bazo?

Bi bilo bolje vsako kombinacijo opcij zapisati kot svoj artikel z nekim parent_id-jem 'master' izdelka?



Vseh nasvetov in komentarjev bom zelovesel :)



edit:

zdaj ko sem še 1x prebral, se mi zdi najbolje zalogo in ceno zapisati v tabelo 'product' in vse artikle grupirati po polju 'model'... v tabelo 'product' pa dodati še eno polje za privzeto prikazani artikel.



Res je fajn toplo vodo odkrivat :D


všeč(0) ni všeč(0) spam(0)
 
SpinX 12. dec 2011 21:32:52 Pridružen od:
17. mar 2007
2618 objav
1720 190 20
všeč(0) ni všeč(0) spam(0)
Developer? Bi delal v kul podjetju ? http://dlabs.si/jobs
 
krho 13. dec 2011 06:06:07 Pridružen od:
7. jul 2011
58 objav
26 4 1
#3

EAV is bad. Če ne prej boš to ugotovil, ko boš imel 1km joinov. Če ne verjameš pa poglej, kaj dela magento...


všeč(0) ni všeč(0) spam(0)
www.pagein.si | www.nadzornaplošča.si - Kvalitetno, zanesljivo in cenovno ugodno gostovanje elektronskih poštnih predalov.
 
SpinX 13. dec 2011 17:37:11 Pridružen od:
17. mar 2007
2618 objav
1720 190 20
#4

EAV ali vsaj nekaj podobnega je precej bolje kot pa nova tabela za vsako lastnost produkta kot je zgoraj :)


všeč(0) ni všeč(0) spam(0)
Developer? Bi delal v kul podjetju ? http://dlabs.si/jobs
 
blackmamba 14. dec 2011 08:41:43 Pridružen od:
4. mar 2008
559 objav
392 25 11
#5

@SpinX: Kje si videl novo tabelo za vsako lastnost? Vse lastnosti so v eni tabeli 'attribute', vrednosti pa v 'attributevalue'. Pravzaprav je struktura precej podobna primeru, ki si ga poslal, ki mi je btw. dal za misliti. (različni tipi za attributevalue)



@krho: Je res 1km = bad, ampak a kaj drugega preostane? Konec koncev se lahko te zadeve pocachira in ob spremembah artikla/opicj zapiše v neko obliko, ki prihrani precej joinov. Poznaš mogoče kak drug pristop?



Včeraj nisem utegnil odgovoriti, bom pa danes zvečer naredil verzijo 2 strukture in poslal. Hvala za pomoč :)


všeč(0) ni všeč(0) spam(0)
 
krho 14. dec 2011 17:38:42 Pridružen od:
7. jul 2011
58 objav
26 4 1
#6

document based storage vsaj za attribute, lahko tudi vse, kar ne potrebuje transakcij, Za ostalo relacijska baza.


všeč(0) ni všeč(0) spam(0)
www.pagein.si | www.nadzornaplošča.si - Kvalitetno, zanesljivo in cenovno ugodno gostovanje elektronskih poštnih predalov.
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se