[ kelja @ 28.04.2008. 13:19 ] @
| Pravim neki hotornot klon, gde bi korisnici trebalo da pored osnovnih podataka o slici(kategorija, pol, godine fotografisanog(fotografisane)) unesu i kljucne reci/izraze (tagove) po kojima bi se slika mogla naci(na sajtu ce biti tag cloud ili obicna drop down lista tagova, uglavnom, neka vrsta pretrage po tagovima bi trebalo da postoji).
Moje je pitanje kako te tagove smestiti u bazu, sta je najlakse najbolje, najefikasnije za buducu pretragu.
Sta biste vi uradili?
(Pretpostavljam da najbolje i najlakse ne mora da bude isto:))
Da li da drzim tagove u posebnoj tabeli, i to da svaki tag smestam u poseban red u tabeli, povezan preko id-a sa slikom,
ili da jednostavno smestim tagove odvojene zarezom (ili prazninom) u istu tabelu u kojoj su i slike, samo da dodam jedno polje za njih, pa bi jedan red u tabeli ''slike'' izgledao, recimo, ovako: id, ime_slike, rejting, broj ocenjivanja, pol, staros', tagovi???
|
[ dakipro @ 28.04.2008. 13:25 ] @
Mislim da je sasvim ok da tagove cuvas u jednom polju (bar i ja tako planiram da organizujem tagove). A pretraga posle ide lagano LIKE %naziv_taga% i nema da omane... nema da joinujes, da povecavas bazu, vadis relacije itd. E sad, zavisi kako ces ih prikazivati, sredjivati duplikate tagova i to, taj deo bi mogao da bude malo manje optimizovan, mada to zavisi od konkretnog slucaja.
Iskreno, mislim i da je baza i optimizovanija ovako, i da ce brze da se ponasa.
[ kelja @ 28.04.2008. 13:41 ] @
Ok, hvala.
[ wizarded @ 04.05.2008. 13:25 ] @
Citat:
dakipro: Mislim da je sasvim ok da tagove cuvas u jednom polju
slazem se
[ mb_sa @ 05.05.2008. 07:48 ] @
Treba imati na umu da MySQL ne korsiti indexe na upitima sa LIKE '%tags%'
[ dakipro @ 05.05.2008. 07:52 ] @
Cak iako se polje `tagovi` indexira? Onda uvek mora `=` da bi mysql koristio indexe?
[ mb_sa @ 05.05.2008. 08:47 ] @
Polje koje je indexirano ne mora znaciti da će ga mysql koristiti. Polje jednstavno nije kandidat za kreiranje indexa na njim ili upit je napisan tako da mysql ne moze da korisiti index. Recimo, ako imas indexirano polje datum sa vrijendostima '2008-05-05' i onda u upitu radis WHERE YEAR(datum) = 2008, logicno da mysql nece korstiti index, jer imas indexirano '2008-05-05', a ne '2008'.
Ovdje piše kada mysql koristi, a kada ne koristi index:
http://dev.mysql.com/tech-reso...esentation-oscon2000-20000719/
[ dakipro @ 05.05.2008. 09:01 ] @
Super, hvala ti...
Imao sam neku pogresnu predstavu o tome izgleda, ili nisam dovoljno obracao paznje.
Koristan info, thx again

Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.