OK, radio sam kao, izmedju ostalog, database admin na Kupindu preko pet godina, ajde par saveta:
- Bazu modeliras u alatu za bazu. Ne u programskom jeziku :D . Super su te fore, migracije, i slicno, ali nijedan e-commerce koji ima iole normalnu velicinu baze ne pise migracije, trajale bi predugo. Alter table na nekim tabelama na kupindo bazi je trajao po 3-4 sata, da je to migracija ceo sajt bi ti bio down :).
- Ako ti je za ucenje, prvo vidi kako ces da resis atribute objekata. Toplo ti preporucujem da proucis Entity-Attribute-Value model. To je ono "broj cipela, boja... ".
- Kategorije definisises kao jednu tabelu. Sve ostalo kao drugu tabelu, a onda imas relacije parent-child, svaka potkategorija ima ko joj je parent kategorija u vidu relacije. Menja se to cesto. :) Napravi da mozes da prebacis potkategoriju iz jedne u drugu kategoriju. Trebace ti. :D
Ne ide se "rekurzivno" nije to lista. Ako imas kategoriju knjige i potkategoriju beletristika, ti za svaki entitet (predmet) imas tabelu koja pravi relacije kategorija-predmet (knjige - "rat i mir") i relaciju potkategorije ("beletristika" - "rat i mir"). Ako ti je predmet "rat i mir" ID-a 5521 ti samo trazis sve sto imas u tabeli kredmet_kategorija WHERE IDPredmet=5521 da saznas u kojoj je kategoriji, ili WHERE ID_kategorjia=11 ako je 11 ID kategorije knjige. Ako hoces jednim upitom da sve dohvatis, imas za to JOIN, koji mozes da podrzis i nekim indexom...
Nisam naravno sacuvao strukturu baze i ne smem ni da komentarise ono sto je poslovna tajna, ali EAV model koriste svi veliki ecommerce sajtovi.
Ako hoces da pravis ecommerce projekat dobro nauci relacione baze. Sad mi je zao sto mysql.rs vise ne radi, imao je Bogi tamo fantazija tekstove o normalnim formama i dizajnu baza. :) U svakom slucaju, guglas "normane forme", guglas "Entity-Attribute-Value" pa polako.
Please do not feed the Trolls!
Blasphemy? How can I blaspheme? I'm a god!'