• 8 odgovora
  • 3.562 pregleda
Čuvanje podataka o uploadovanim slikama u bazi podataka 18.04.2012. u 22:58 · pre 176 meseci #1
Ćao svima. Pravim jedan sajt i treba da ima multiple upload. To sam rešio, ali nisam siguran kako da čuvam podatke o slikama u bazi.

Razmišljao sam da napravim polje attachedPhotos u tabeli i da u njega upisujem uploads/imeslika.jpg|||uploads/imeslike2.jpg pa da posle vršim explode ili kako..?


Sada sam se setio još nečega. Da napravim tabelu attachedPhotos, i tabelu photosRelations.
I onda u attachedPhotos ubacujem id, lokaciju, datum i title, a u photosRelations ubacujem
id, postID, photoID
Ja mislim da je ovo drugo bolje, a vi?

[Ovu poruku je menjao PHPovac dana 19.04.2012. u 00:09 GMT+1]
Re: Čuvanje podataka o uploadovanim slikama u bazi podataka 19.04.2012. u 07:51 · pre 176 meseci #2
Ovo drugo je bolje, ustvari ovo drugo je skoro pa jedino dobro za slucaj koji ti imas. Ako ti treba vise istih fotografija na nekoliko razlicitih postova, onda moras tako sa N-N relacijom (ili kako se vec to tehnicki zove)
Potpis
http://norway.dakipro.com/
Re: Čuvanje podataka o uploadovanim slikama u bazi podataka 19.04.2012. u 15:07 · pre 176 meseci #3
Citat:
Sada sam se setio još nečega. Da napravim tabelu attachedPhotos, i tabelu photosRelations.
I onda u attachedPhotos ubacujem id, lokaciju, datum i title, a u photosRelations ubacujem
id, postID, photoID

Mislim da nema potrebe da dodajes drugu tabelu, kad vec imas postID. Dodaj jos jednu kolonu u prvu tabelu, pa hvataj slike na osnovu nje... A posto se slike nece cesto brisati, izbacio bih id kolonu iz prve tabele, i samo ostavio postID. Posle brises na osnovu postID i lokacije...
Re: Čuvanje podataka o uploadovanim slikama u bazi podataka 19.04.2012. u 19:04 · pre 176 meseci #5
INSERT INTO attachedPhotos (postID, lokacija, datum, title) VALUES ('1','ime_prve_slike.jpg','datum','title')
INSERT INTO attachedPhotos (postID, lokacija, datum, title) VALUES ('1','ime_druge_slike.jpg','datum','title')
SELECT * FROM attachedPhotos WHERE postID='1'
DELETE FROM attachedPhotos WHERE postID = '1' AND lokacija="ime_prve_slike.jpg"

Umesto:
INSERT INTO attachedPhotos (id, lokacija, datum, title) VALUES ('1','ime_prve_slike.jpg','datum','title')
//get last insert id
INSERT INTO photosRelations (id,postID,photoID) values ('1','1','1')
INSERT INTO attachedPhotos (id, lokacija, datum, title) VALUES ('2','ime_druge_slike.jpg','datum','title')
//get last insert id
INSERT INTO photosRelations (id,postID,photoID) values ('2','1','2')
SELECT * FROM photosRelations LEFT JOIN attachedPhotos on photosRelations.photoID = attachedPhotos.id WHERE photosRelations.postID='1'
DELETE FROM photosRelations WHERE photoID='1'
DELETE FROM attachedPhotos WHERE photoID='1'

:)
U prvom lepo stavi index na attachedPhotos.postID, i uziva :) Trosice manje memorije, i radice brze. Jedno ce brisanje biti malo sporije, jer ce morti da se radi pretraga "lokacija" polja, ali realno to je zanemarljivo jer ne brise slike tako cesto......

Inace, kad se vec raspisah (ovo je cisto licno razmisljanje), nemoj da upisujes lokaciju, vec samo ime slike. Posle si slobodan da prebaci slike negde drugo ako je potrebno, a da putanju menjas u aplikaciji (umesto da menjas sve redove u bazi)... I ako bi koristio originalni drugi primer, umesto da stavis da ti se id slike zove id, bolje stavi photoID (pa posle kad radis left join, ne pises blablabla ON blablabla nego USING (photoID).
Re: Čuvanje podataka o uploadovanim slikama u bazi podataka 22.04.2012. u 11:25 · pre 176 meseci #6
Klasicna, neko bi rekao 'pocetnicka', Parent-Childs struktura. UVEK i SAMO snimati imena falova, bez pune lokacije (osim ako slika nije sa drugog hosta :D). Moze se raditi i sa FOREIGN KEY (http://dev.mysql.com/doc/refma...b-foreign-key-constraints.html) ali ce tada brisanje samih fajlova biti malo komplikovano. U ostalom, ako je Facebook dozvolio sebi da ne brise slike (jos uvek im se moze pristupiti ako znate punu lokaciju (URL) cak i ako su izbrisane sa profila) ne vidim zasto bi i ti brinuo oko toga (jedino mozda zbog MB limita) ...
Potpis
registered Linux user #378994
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme