Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 25 odgovora
  • 9.194 pregleda

Najnovija ↓

Baza recepata - dizajn 08.08.2012. u 13:56 · pre 173 meseca #1
Pozdrav, mnogi od vas su ovo radili, siguran sam...

Zanima me dizajn baze recepata... Pretpostavljam da dve tabele (kategorije i recepti), nisu bas najgenijalnije resenje... :D

E, sad, gledajuci neka gotova resenja, dosao samo do otprilike sledece strukture:

categorije: id | title
recepti: id | cat_id | name | description ... i sta god jos tu treba (cekam da vidim dizajn strane/sablona za recepte, pa cu znati preciznije)...

E, sad, sastojci, kamen spoticanja... Bilo bi bezveze nagurati sastojke (koji se cesto ponavljaju) u tabelu sa receptima, pa bi onda to ovako islo...

sastojci: id | name, pa onda jedna tabela za povezivanje sastojaka sa receptima:

sastojci_recepti: id | sastojak_id | recept_id

E, sad... tu su i kolicine (koje ce se sigurno relativno cesto ponavljati)... da li i sa njima da uradim isto???

Hvala!
Re: Baza recepata - dizajn 08.08.2012. u 14:18 · pre 173 meseca #2
Ne verujem da ces da dobijes nesto ako ti kolicine stoje u posebnoj tabeli, ja bih dodao jos jednu kolonu u sastojci_recepti u kojoj ce biti upisana kolicina, i u sastojci jednu kolonu u kojoj ce biti upisana jedinica kolicine sastojka.
Potpis
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
Re: Baza recepata - dizajn 08.08.2012. u 15:56 · pre 173 meseca #3
Citat:
pajaja:
Ne verujem da ces da dobijes nesto ako ti kolicine stoje u posebnoj tabeli, ja bih dodao jos jednu kolonu u sastojci_recepti u kojoj ce biti upisana kolicina, i u sastojci jednu kolonu u kojoj ce biti upisana jedinica kolicine sastojka.


Hvala!
Evo sad sam dobio dizajn... Na demo strani ni nema kolicina, pa se sad raspitujem da li im to treba, ili ce to sve da bude opisano u deskripciji recepta (kroz 'korake' u pripremanju)...

Pretpostavljam da je broj 'koraka' promenljiv, i trebalo bi da se koristi onaj fensi jquery slider, kao ovde: http://www.fullstopinteractive.com/#our-projects

na recept stranici...
isto sam pokusao da objasnim da ovaj fensi slajder nije dobar za setanje po kategorijama (SEO i AJAX njakanje)... ne znam da li smo se razumeli... :D
Re: Baza recepata - dizajn 08.08.2012. u 23:02 · pre 173 meseca #4
Ovo sad nema mnogo veze sa PHP-om ali moja preporuka je da obavezno imate listu sastojaka sa kolicinom i vremenom pripreme. To je prva stvar koju ce posetilac da pogleda i trebalo bi da sadrzi dovoljno informacija da moze da odluci da li mu odgovara recept ili ne.
Potpis
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
Re: Baza recepata - dizajn 08.08.2012. u 23:50 · pre 173 meseca #5
Da, da, to ce svakako biti (lista sastojaka i vreme pripreme)...
(mozda je trebalo maknuti temu u MySQL, ali doci ce i do php-a, kad dodjem do organizacije admin panela, na primer:D)

Pozdrav!
Re: Baza recepata - dizajn 09.08.2012. u 00:10 · pre 173 meseca #6
Ja pravim jedan sajt sa receptima i ja sam to rešio na mnogo "gluplji" način.
Sastojci su ul u jednoj koloni, priprema je u druogoj.
Re: Baza recepata - dizajn 09.08.2012. u 00:34 · pre 173 meseca #7
:)
Pa meni se to najvise svidja, ali kazu da nije 'profi'... kako si resio pretragu?

Da, kako biste ovo resili... svaki recept ce imati x 'koraka' koji bi tako trebalo da budu prikazani na strani... u admin panelu bih ih svakako odvojio... e sad...da zbudzim to u jednu kolonu nekako, u tabelu sa receptima, ili pak???




Re: Baza recepata - dizajn 09.08.2012. u 01:29 · pre 173 meseca #8
Citat:
kelja: :)
Pa meni se to najvise svidja, ali kazu da nije 'profi'... kako si resio pretragu?

Da, kako biste ovo resili... svaki recept ce imati x 'koraka' koji bi tako trebalo da budu prikazani na strani... u admin panelu bih ih svakako odvojio... e sad...da zbudzim to u jednu kolonu nekako, u tabelu sa receptima, ili pak???

Ja bih sve to stavio u jednu celiju, a upisao u fazonu:
"Ovo je recept za pitu:babina pita <|> Ovo je prvi korak <|> Ovo je drugi korak <|> ovo je treci korak"
Posle raditi explode sa "<|>" i ispisivati korake. Mnogo je lakse manipulisati podacima kad su ovako upisani. Eventualno dodati jednu kolonu u kojoj ce se cuvati broj koraka, ukoliko je potrebno za pretragu.


Citat:
sastojci: id | name, pa onda jedna tabela za povezivanje sastojaka sa receptima:
sastojci_recepti: id | sastojak_id | recept_id

Cek samo, kako mislis da trazis recepte koji imaju sastojak sa id=1 i sastojak id=2 i sastojak id=33?
Re: Baza recepata - dizajn 09.08.2012. u 03:00 · pre 173 meseca #9
Citat:
kelja: :)
Pa meni se to najvise svidja, ali kazu da nije 'profi'... kako si resio pretragu?

Pa pretraga je najjednostavniji match against. Tako i sastojke i pripremu i naslove sve odjednom.
Re: Baza recepata - dizajn 09.08.2012. u 09:50 · pre 173 meseca #10
Citat:
Ja bih sve to stavio u jednu celiju, a upisao u fazonu:
"Ovo je recept za pitu:babina pita <|> Ovo je prvi korak <|> Ovo je drugi korak <|> ovo je treci korak"
Posle raditi explode sa "<|>" i ispisivati korake. Mnogo je lakse manipulisati podacima kad su ovako upisani. Eventualno dodati jednu kolonu u kojoj ce se cuvati broj koraka, ukoliko je potrebno za pretragu.

Moze da smesti korake u array i onda da ga zapise kao JSON u bazu. Ima vec funkcije za encode i decode koje ce da se pobrinu za sve i nece morati da misli o eskejpovanju delimitera unutar teksta.
Potpis
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
Re: Baza recepata - dizajn 09.08.2012. u 13:57 · pre 173 meseca #11
Hvala, ljudi, vasi saveti su kao i uvek, pomogli!
Re: Baza recepata - dizajn 09.08.2012. u 15:49 · pre 173 meseca #12
Citat:
pajaja: Moze da smesti korake u array i onda da ga zapise kao JSON u bazu. Ima vec funkcije za encode i decode koje ce da se pobrinu za sve i nece morati da misli o eskejpovanju delimitera unutar teksta.

Ovo tvoje je mnogo elegantnije resenje :)

Posto je OP nasao sve sto ga je zanimalo, da i ja pitam:
Citat:
Milos911: "sastojci: id | name, pa onda jedna tabela za povezivanje sastojaka sa receptima:
sastojci_recepti: id | sastojak_id | recept_id"
Cek samo, kako mislis da trazis recepte koji imaju sastojak sa id=1 i sastojak id=2 i sastojak id=33?

Jel ima neko odgovor na ovo pitanje, nevezano za temu ali me zanima da li je moguce kako izvesti (normalno da bude jedan query, i ne previse zahtevan)?
Re: Baza recepata - dizajn 09.08.2012. u 17:31 · pre 173 meseca
izmenjeno 1 put, poslednji put pajaja 09.08.2012. u 17:46
  1. pajaja09.08.2012. u 17:46zapis iz teksta poruke
#13
Ne znam koliko je ovo najbolje resenje, bolje da pitas na mysql forumu, ali prvo sto mi pada na pamet je:
Code (sql):

SELECT r.recept_id, itd...
FROM recepti r
INNER JOIN sastojci_recepti s1 ON s1.recept_id = r.recept_id AND s1.sastojak_id = 1
INNER JOIN sastojci_recepti s2 ON s2.recept_id = r.recept_id AND s2.sastojak_id = 2
INNER JOIN sastojci_recepti s3 ON s3.recept_id = r.recept_id AND s3.sastojak_id = 33
 

i ne izgleda bas skalabilno :)
Potpis
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
Sviđa mi se1
Re: Baza recepata - dizajn 10.08.2012. u 11:26 · pre 173 meseca #14
Hehe, OP™ ima jos nekih pitanjaca... :D

Citat:
PHPovac: Pa pretraga je najjednostavniji match against. Tako i sastojke i pripremu i naslove sve odjednom.


Znaci, koristis fulltext search. Ok, to (valjda) znaci da moram i imena kategorija i recepata i kratke opise da drzim u 'text' tipu polja?

I onda, koliko vidim, moglo bi da se svede ovo na dve tabele, ipak - recepti i kategorije, ako sam te dobro razumeo?
Re: Baza recepata - dizajn 10.08.2012. u 11:39 · pre 173 meseca #15
Da, osim ako nećeš više kategorija, onda trebaš tri (kategorije, veze_kat, recepti).
Inače fulltext može i na varchar, ja koristim tekst samo za opise i sadržaj.
Ako hoćeš da ti sajt bude jednostavniji, možeš i sa dve trabele, a recept da ima kolonu kategorije gde smeštaš id-ove u formatu 1,2,3,4 itd. Onda ako hoćeš da prikažeš nešto pod određenim kategorijama uradiš select * from recepti where kategorije like '%{$string_sa_kategorijama}%'
Re: Baza recepata - dizajn 10.08.2012. u 11:54 · pre 173 meseca #16
Citat:
PHPovac:
Da, osim ako nećeš više kategorija, onda trebaš tri (kategorije, veze_kat, recepti).
Inače fulltext može i na varchar, ja koristim tekst samo za opise i sadržaj.
Ako hoćeš da ti sajt bude jednostavniji, možeš i sa dve trabele, a recept da ima kolonu kategorije gde smeštaš id-ove u formatu 1,2,3,4 itd. Onda ako hoćeš da prikažeš nešto pod određenim kategorijama uradiš select * from recepti where kategorije like '%{$string_sa_kategorijama}%'


Aha, pa kategorije bih svakako smestio u tabelu: id | parent_id | title, a recepti bi imali cat_id, svakako... Pa mogu kombinaciju fulltext searcha i obicne pretrage, kao sto si sugerisao...

Nego, dok smo se dogovarali, likovi su se setili jednog vrlo ''zanimljivog'' dodatka: da li moze automatski da se poveca kolicina sastojaka u skladu sa izabranom porcijom (za dvoje, za troje, itd...) :D

Bojim se da nemam ideju kako ovo uraditi, suvise mogucnosti, suvise formula, svaki recept je jedinstven... :D
Re: Baza recepata - dizajn 10.08.2012. u 11:59 · pre 173 meseca #17
Pa može ako koristiš odvojenu tabelu. Ako ne onda ništa. Evo sa odvojenom tabelom.
Imaš $kolicina_sastojak npr. 3 a sastojak jaja. To je jedna porcija. Ako korisnik klikne na dve porcije ti proslediš get promenjivu br_p i onda u php kodu proveriš da li je setovana br_p i ako jeste onda količinu sastojaka pomnoži sa br_p pojedinačno za svaki sastojak.
Re: Baza recepata - dizajn 10.08.2012. u 17:49 · pre 173 meseca #18
Citat:
PHPovac:
Pa može ako koristiš odvojenu tabelu. Ako ne onda ništa. Evo sa odvojenom tabelom.
Imaš $kolicina_sastojak npr. 3 a sastojak jaja. To je jedna porcija. Ako korisnik klikne na dve porcije ti proslediš get promenjivu br_p i onda u php kodu proveriš da li je setovana br_p i ako jeste onda količinu sastojaka pomnoži sa br_p pojedinačno za svaki sastojak.



Da... tako nekako...
Eh, svakako cu morati dobro da razmislim o dizajnu baze, pre nego sto krenem... precesto im padaju na pamet neke nove mogucnosti, a jos nisam ni poceo da radim. :D

Hvala!
Re: Baza recepata - dizajn 15.08.2012. u 12:43 · pre 173 meseca #19
Eh, morace ipak razdvojene tabele... Konacno sam dobio zavrsnu ''listu zelja''. Ako nekog slucajno ne mrzi, nek baci pogled na attachment...

Bice tu slideshow - sa random receptima/linkovima, ''sastojak nedelje'', sa linkovima ka nekoliko random recepata koji koriste taj sastojak...
Sklepao sam neku bazu (imate .sql fajl u attachmentu), ali sad imam izvesne nedoumice oko organizacije admin panela... s obzirom na to sto hoce, bilo bi dobro da prvo naprave ''bazu sastojaka'' -> popune tabelu ''ingredients'', a onda da ide sa popunjavanjem baze receptima... Ono ''racunanje porcija'', o kom smo pricali, moze da se resi i prostim jquery-jem, ako se povecanje/smanjenje porcija radi prostom multiplikacijom™/deljenjem, medjutim... mera, kao sto je, u primeru, ''a pinch of salt'', tesko ce da se uklopi u to... :D

U svakom slucaju, ako vas ne mrzi, bacite oko na postojecu postavku u attachmentu, pa kazite koju - hoce li moci ova organizacija baze da izgura ljuCki ovaj frontend???

Hvala!!!!

Re: Baza recepata - dizajn 15.08.2012. u 13:49 · pre 173 meseca #20
To što zoveš "završna lista želja" mi ne liči na kraj.

Moram malo da te kritikujem, krenuo si odmah sa dizajnom baze, a da nisi završio ni sistem analizu.

Recimo, sada si dobio želju da staviš sastojak nedelje, a nemaš u bazi recepata, na primer, date_added. Mogao bi, da imaš datum, da pustiš upit koji bi ti rekao koji se satojak najčešće pojavljivao u prošloj nedelji, pa da onda automatski izabereš takav sastojak, ili da daš opciju da urednik prihvati taj sastojak ili odabdere neki svoj po izboru.

Pitanje je da li će i korisnici sajta moći da dodaju recept. Ako mogu, trebalo bi da držiš user_id onga ko je dodao recept.

Bilo bi interesantno imati, na primer kategoriju "Recent recepies" (najnoviji recepti po datumu objavljivanja) "Most popular" (recepti koji su najviše puta pregledani, po nekoj statistici) "User choice" (najbolje ocenjeni recepti od strane korisnika, potrebno je napraviti sistem za ocenjivanje), "Editor's choice" (recepti rangirani po oceni vlasnika sajta).

Loš dizajn baze je i to što si predvideo jednu kategoriju za jedan recept. Šta ako nešto može da bude i predjelo i glavno jelo?
Kategorizacija je slabo zamišljena. Na primer, može biti bitno da li je recept vegetarijanski/veganski ili ne. Da li je za dijabetičare ili ne. Kojoj kuhinji pripada (italijanska, kineska, japanska), da likoristi svinjetinu, govedinu, piletinu, jagnjetinu ili ribu itd..

Možda treba predvideti komentare na recepte.

Koraci su dobar kandidat (onako kako je zamišljen dizajn stranice) da budu razbijeni u više slogova u bazi - jedan korak, jedan slog, mada se meni tako nešto ne sviđa, pa bih ja sugerisao drugačiji dizajn stranice naručiocu.

Što se sastojaka tiče, mislim da je tvoj dizajn noćna mora. Tvoj sastojak nije u šifarniku, pa će chocolate i choclate (ovaj drugi je sa greškom) da budu dva različita sastojka. Zamisli samo muke sa unosom sastojaka. Zamisli recept koji traži 300g slatkovodne ribe, a drugi koji traži 300g šarana. Po kojem kriterijumu uopšte možeš da provališ da su to slični recepti.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme