baza za online prodavnicu
Pozdrav svima. Pravim neku bazu za online prodavnicu racunara i treba mi savet oko organizacije iste. Evo o cemu se radi:
Treba pamtiti podatke komponentama i konfiguracijama komponenti koje prodavnica ima. Naravno administrator aplikacije mora da ima opciju da sve to menja (dodaje nove komponente i konfiguracije, brise, menja brojno stanje komponenti - standardica). Treba omoguciti i online narudzbu, tj da korisnik moze sam da napravi sebi konfiguraciju izborom komponenti. To je uglavnom najbitniji deo baze, ne racunajuci registraciju korisnika, definisanje administratora, ovlascenja sta ko moze da vidi itd. E sad, interesuje me ovaj dio oko komponenti, konfiguracija i narudzbi. Da li je zgodnije da sve komponente smestam u jednu tabelu ili da ih razvrstavam (npr posebno ploce, posebno procesore itd) ali u tom slucaju dobijam vise tabela. Ako bi ih stavio u jednu tabelu onda bi mogao da dodam jos jedno polje gde bi mogao da indetifikujem nekim parametrom da li su to ploce da li su procesori... zanima me sta je zgodnije i sta ce praviti manje problema u daljem radu. Nema potrebe da jos detaljisem, mislim da je svima jasno o cemu se radi. Hvala unapred svima ! |
1. Zasto izmisljas toplu vodu? Ukoliko pravis nesto konkretno, najbojlej e koristiti gotova rjesenja (e-commerce), ako hoces uciti - onda je razlog opravdan.
2. Zamisli da imas 100.000 razlicitih kategorija proizvoda (sto nije nemoguce u nekoj obicnoj prodavnici) .. koliko ces tabela u tom slucaju imati? Kakva ces im imena davati? Kako ces ih naci?... Jednom rijecju - ne radi se to tako. Znam da tebe buni to sto razlicite kategorije proizvoda imaju razlicite karakteristike, ali to se rjesava promjenjivim (opcionim) atributima koji su vezani za odradjene grupe / vrste proizvoda. |
Pa ucim, nista gotova resenja.
Pa kakve veze ima sto imam 100000 artikala ako imam, sto ti kazes, mogucnot da izvrsim kategorizaciju proizvoda (tastature, misevi, hdd, monitori). Koliko shvatam, ti predlazes da sve komponente budu u jednoj tabeli koja ce imati jedno polje "kategorije" pa ako se javi da imam 100 razlicitih monitora oni ce biti u tabeli pod kategorijom "monitori" i time sam na dalje resio problem sa manipulacijom (brisanje, promenu brojnog stanja u magacinu, ponudu korisniku da izabere odredjenu komponentu iz odredjene kategorije itd) ?!? |
imas tabele proizvodi, kategorije i veznu tabelu proiz_kateg koja ima samo polja proizvod_id i kategorija_id (posto je obicno pretpostavka da jedan proizvod moze da bude u vise kategorija, ako to nije potrebno onda mozes i bez ove tabele). Kategrije imaju polje parent_id, preko koga moze da se pravi hijerarhija tipa maticne_ploce -> intel -> i7 (a istovremeno ti ta ploca spada u recimo kategoriju Asus)
To je jednostavan deo, ono sto je komplikovanije su atributi za proizvode, posto nemaju iste osobine maticna ploca i tastatura, znaci treba da imas polja koja su pretraziva, a razlikuju se za svaku kategoriju proizvoda. Zato su za takve stvari bolje no-sql baze, recimo MongoDB je fenomenalan za takve poslove |
|
Citat:
|
Ono što tebe zanima je verovatno EAV model (Entity-attribute-value model), pa potraži na Googlu. EAV ti daje fleksibilnost u opisu proizvoda različitim atributima, ali ima svoju cenu u pogledu brzine. Ako želiš prodavnicu opšte namene onda možda treba razmišljati o ovakvom rešenju, u suprotnom potraži način da izbegneš ovaj model.
|
Evo, od prilike koliko sam shvatio za ovaj deo oko proizvoda, kategorija i narudzbe bi trebao da izgleda ovako. Samo jos nesto da razjasnimo, pod kategorijama se, u ovom slucaju,valjda podrazumevaju monitori,tastature,memorije itd, ako je to tako onda bi relacioni model licio na nesto ovako:
Kôd:
Proizvodi (idProizvoda, nazivProizvoda) Kôd:
Proizvodi (idProizvoda, nazivProizvoda, idKategorije) |
Da, to ti je već napisao ivanhoe:
Citat:
Što se tiče karakteristika proizvoda koji zavise od kategorije, pogledaj ovo što je preporučio dacha: Citat:
|
Hhehe, u pravu si za narudzbenicu :) ne treba kateogrija :)
Zaboravio sam da ce mi trebati jos jedna tabela a to je konfiguracije koje ce se ticati samo administratora u fazonu kao da administrator moze da pravi konfiguracije i da ih predlaze kupcima. Da li je dovoljno samo samo da ta tabela konfiguracije kao spoljni kljuc ima idProizvoda iz tabele Proizvodi ili kako vec ? |
Nesto mi je zamrla tema :D
Evo nadam se da sam sad OK organizovao bazu: Kôd:
Proizvodi (idProizvoda, nazivProizvoda) Ono sto sam i ocekivao jesu problemi kada budem pravio upite pa sad jos jednom pitam da li je to sve sto mi je potrebno da mogu da vrsim dodavanja, brisanje i izmjenu proizvoda, kategorija i konfiguracija kao i pravljenje narudzbi na osnovu proizvoda. Napominjem jos jednom da pod kategorijama cu da podrazumevam Procesore,Monitore itd. |
Nekako mi se čini da ti ove tabele za Narudžbe i Konfiguracije ne stoje baš. Na primeru konfiguracije imaćeš bar jednu njenu karakteristiku, ako ne drugo onda naziv, uz koji ti ide idKonfiguracije, dok tabela koju si predstavio bi valjalo da nosi ime Konfiguracije_Proizvodi (više prema više opet...
|
Nisam shvatio to za narudzbe bas najbolje :(
A ovo za Konfiguracije_Proizvodi (vise prema vise) - kako jedan proizvod moze da bude svrstan u vise kategorija (Znaci tastatura da pripada i tastaturama i misevima) ?!? |
Sorry, ne vidim pomena kategorije u prethodnoj poruci.
(više prema više) Primer tastature i konfiguracija - ista tastatura može da bude u 'osnovnoj' i 'srednjoj' konfiguraciji. |
Kakva sad srednja i osnovna konfiguracija, mislim da ti nisi citao od pocetka ovu temu !
|
Pa samo malo razmisli. ovako kako si ti uradio, mozes da pravis samo konfiguracije od jedne komponente. Treba da imas dve tabele:
Kôd:
Konfiguracije(idKonfiguracije, nazivKonfiguracije) |
Ahaaaa pa nisam mogao da razumem sugestiju, zbunio me sa ovim srednja i osnovna
Da li si na ovo mislio i da li je konacno to to sto meni treba za dodavanje, izmenu i brisanje kategorija, komponenti, konfiguracija kao i pravljenje narudzbi? Kôd:
Proizvodi (idProizvoda, nazivProizvoda) |
Da, to bi bio neki školski primer kako se to radi. Najbolje da u glavi prođeš proces pravljenja i brisanja konfiguracija i narudžbi, ili još bolje da napišeš SQL upite za to, svakako će ti trebati ako imaš nameru da praviš shop.
|
OK, HVALA.
Sad cu malo da se pozabavim malo kreiranjem ove baze. Posto smo ovde koliko toliko postovali normalizaciju podataka kod pravljenja sql upita dosta ce se koristiti JOIN operator ako se ne varam pa cu malo da se pozabavim i time i onda se javljam sa novim problemima :D |
E, dobro je što ste se javili, jer me je razdrmala ova primedba za 'osnovna i srednja', bah...
Pa, imam još par primedbi. Stičem utisak da jedan proizvod može da pripada samo jednoj kategoriji. Ako to jeste slučaj, onda priložena šema nije odgovarajuća, idKategorije bi trebao da bude strani ključ za proizvode, a unakrsna tabela Proizvodi_Kategorije postaje suvišna. To je ako je takva situacija, mada nisam siguran da li kategorizacija komponenti može da bude dovoljno dobra da će korisnik iz prve da pogodi kategoriju u kojoj se nalazi proizvod koji traži. Razmisli dvaput... Drugo, nije mi jasna razlika između Konfiguracije i Narudžbe, molio bih pojašnjenje. |
Citat:
Pa ja sam govorio to da meni nije logicno da proizvodi i kategorije budu u vezi M:N jer sam lepo rekao da cu pod kategorijama podrazumevati : PROCESORE, MONITORE,TASTATURE itd a pod proizvodima INTEL CORE 2 DUO, AMD ATHLON 64 itd itd i ova dva proizvoda mogu samo da pripadaju jednoj kategoriji i to PROCESORIMA i to je to i vazi tvoja primedba za strani kljuc. Sto se tice Konfiguracije i Narudzbe: Narudzbe prave registrovani korisnici tj biraju odgovarajuce proizvode iz odgovarajucih kategorija (prave sami sebi konfiguraju koju hoce da kupe), a Konfiguracije se ticu administratora koje takodje on pravi na osnovu proizvoda iz odredjenih kategorija i nudi kupcima kao takve, znaci kao neka ponuda kupcima gotovih konfiguracija. Eto ukratko |
Mene zanima kako sad popuniti ove tabele, tj kojim redosledom ?
Ako admin ima pravo da manipulise proizvodima i kategorijama , na koji nacin ce on da unosi podatke. Nekako je logicno da prvo unese sve kategorije a onda da unosi proizvode i da bira u koju kategoriju ce da smesta neki proizvod?!? Imam osecaj da cu nesto zabrljati sa ovi id - ovima, da li je dobro da za ova polja koja cuvaju id-ove (kao primarne kljuceve) ostavim auto-increment? |
Vreme je GMT +2. Trenutno vreme je 13:12. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.