Magazin Online - detalii produse - HELP

Discută aici despre procesoare de plăţi, plăţi electronice, soluţii software de comerţ electronic, "shopping cart", SSL, certificate digitale, tranzacţii online securizate, PayPal, Skrill (MoneyBookers), payU(ePayment), MobilPay .

Moderatori: Zamolxe, Moderatori

pufos_carol
PHPRomania Supporter
Mesaje: 6
Membru din: Sâm Mai 05, 2007 12:00 am
Localitate: Pitesti
Contact:

Magazin Online - detalii produse - HELP

Mesajde pufos_carol » Mar Aug 09, 2011 5:22 pm

Salutare la toata lumea,

Lucrez la un magazin online si am dat peste o problema urata.
Clientul vrea sa isi gestioneze sabloanele pentru delatiile (specificatiile) produselor.
A mai facut cineva vreun magazin online sau se pricepe ?

Momentan m-am oprit la o metoda ...
1. Sa creez o tabela in baza de date unde sa stochez sabloanele unei categorii de produse :

attribute(1, 'Manufacturer')
attribute(2, 'Cost')
attribute(3, 'GSM standards')
attribute(4, 'Hard Disk capacity')

apoi sa am o tabela unde inserez produsele (si cam tot ce au ele in comun - culori disponibile .. etc - orice in afata de specificatii ...)

tabela de categorii:
category(1,'Computers')
category(2,'Cell Phones')

tabela produse:
product(1, 'iMac', category = 1)
product(2, 'iPhone', category = 2)

si o tabela unde sa fie stocate toate specificatiile la toate produsele :
product_attribute(product_id=1, category_attribute_id=1, 'Apple')
product_attribute(product_id=1, category_attribute_id=2, '$300')
product_attribute(product_id=1, category_attribute_id=4, '500Gb')
product_attribute(product_id=2, category_attribute_id=1, 'Apple')
product_attribute(product_id=2, category_attribute_id=2, '$200')
product_attribute(product_id=2, category_attribute_id=3, 'GSM 900/1800/1900')

si eventual o tabela in care sa fie linkate atributele de categorii :
category_attribute(id=1,category=1,attribute==1)
category_attribute(id=2,category=1,attribute==2)
category_attribute(id=3,category=1,attribute==4)
category_attribute(id=4,category=2,attribute==1)
category_attribute(id=5,category=2,attribute==2)
category_attribute(id=6,category=2,attribute==3)

si un select pentru categoria 1 sa afiseze toate atributele (acum este facuta pentru toata categoria dar pot pentru fiecare produs)

select * from attributes a join category_attribute ca on ca.attribute_id = c.id join category c on c.id = ca.category_id where c.id = 1

Intrebarea mea este :
Este o metoda fiabila ? Este o metoda utilizata ? Mai exista si alte metode mai bune ? Pentru ca la 10000+ de produse in tabela product_attribute vor fi cam 1 milion de linii si nu stiu cat de optim se descurca mysql cu atatea linii (in cazul in care trebuie sa selecteze mai multe linii)

A mai realizat cineva ceva asemanator ? O idee ceva ? Nu vreau sa imi dai tot codul dar o idee noua de implementare care sa reduca numarul de linii in acea tabela , dar sa fie la fel de eficienta la gestionarea sabloanelor pentru produse .

O zi buna



catalin.ciobanu
Average Member
Mesaje: 107
Membru din: Vin Dec 25, 2009 1:11 am
Localitate: Iasi

Mesajde catalin.ciobanu » Mar Aug 09, 2011 9:18 pm

Ce cauti tu se numeste EAV model. Gasesti pe net destule informatii despre asta.

pufos_carol
PHPRomania Supporter
Mesaje: 6
Membru din: Sâm Mai 05, 2007 12:00 am
Localitate: Pitesti
Contact:

suuper

Mesajde pufos_carol » Mar Aug 09, 2011 9:49 pm

super tare .. mersi mult de raspuns ... practic la cum vreau sa implementez este tot un model EAV ... nu ? super .. EAV era exact ce cautam ... nu am auzit pana acum ...

catalin.ciobanu
Average Member
Mesaje: 107
Membru din: Vin Dec 25, 2009 1:11 am
Localitate: Iasi

Mesajde catalin.ciobanu » Mar Aug 09, 2011 10:36 pm

Daca implementezi corect modelul EAV la partea de flexibilitate nu o sa ai probleme niciodata, dar vei pierde pe partea de performanta, asta datorita joinurilor necesare, dar te poti folosi de caching.

pufos_carol
PHPRomania Supporter
Mesaje: 6
Membru din: Sâm Mai 05, 2007 12:00 am
Localitate: Pitesti
Contact:

online shop

Mesajde pufos_carol » Mar Aug 09, 2011 11:28 pm

dar nu exista o metoda de compromis .. care sa fie atat flexibila dar sa aduca si un plus de performanta ? toate osc-urile mari sunt bazate pe modelul EAV ?

catalin.ciobanu
Average Member
Mesaje: 107
Membru din: Vin Dec 25, 2009 1:11 am
Localitate: Iasi

Mesajde catalin.ciobanu » Mie Aug 10, 2011 12:06 am

Compromisul il alegi de comun acord cu clientul. Nu cunosc decat magento care implementeaza modelul EAV si care iti ofera o flexibilitate foarte mare dar pierde mult pe partea de performanta. Magento insa castiga la capitolul performanta prin a face cache la collectiile de obiecte aduse din baza de date, si nu numai, si se face refresh la cache doar cand se modifica baza de date.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Mesajde nevvermind » Mie Aug 10, 2011 10:15 am

@catalin.ciobanu - de asta si renunta la el (eav) progresiv.

pufos_carol
PHPRomania Supporter
Mesaje: 6
Membru din: Sâm Mai 05, 2007 12:00 am
Localitate: Pitesti
Contact:

eav model

Mesajde pufos_carol » Mie Aug 10, 2011 4:15 pm

Deci practic e destul de trist ca sa folosesti modeul eav ? @nevermind atunci ai vreo propunere ? stii cumva ceva mai bun ? @catalin.ciobanu zi-mi si mie unde pot citi ceva despre cum se face acest cache ? ar fi super ... multumesc mult


Înapoi la “Comert electronic”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 13 vizitatori