Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как организовать фото-хранение, Вопрос скорее теоретический 
:(
    Опции темы
Рыжий
Дата 17.2.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Есть сайт, на котором будет храниться довольно большое кол-во фотографий. Подскажите пожалуйста, как правильно организовать структуру БД + хранение фоток в директориях.


Итак, все фотографии можно разделить на такие категории:
1)личные фотки участников
  Тут думаю все понятно – просто свои фото, в кол-ве 5-10 штук

2)фотки, которые они вставляют в свои сообщения.
  Человек может вставить в сообщение как линк на картинку (в таком случае записываем линк), так и загрузить картинку на сервер (закачиваем картинку к себе).

3) Другие фотки

Формат записи:
Item_id  item_foto
15    pic.jpg
20    pic2.jpg

То есть фотки к различным товарам.

Теперь о реализации:
Можно создать одну таблицу в БД, с полем, например, type в котором записывать какого типа картинка (и соответственно как ее применять)
Или лучше все 3 категории разбить по отдельным таблицам?

И самое главное – как их размещать в директориях на сервере?
Раньше думал делать так:

Foto
--thumbs

----17.02.07
------pic.jpg
------mypic.jpg

----18.02.07
------next.jpg
------next2.jpg


--foto
----17.02.07
------pic.jpg
------mypic.jpg

----18.02.07
------next.jpg
------next2.jpg

Но… как то запутано получается Имхо smile

Что вы можете предложить?

PM MAIL ICQ   Вверх
mishaSL
Дата 17.2.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



1. Структура БД.
Структура БД будет очень сильно зависеть от функций которые ты хочешь выполнять с этими фотографиями. Скажем скорее всего тебе понадобится возможность просмотреть все фотографии какого-либо пользователя. Тогла необходимо хранить ID пользователя, который добавил фото. Или когда ты удаляешь сообщение в котором есть фото, то фото тебе тоже нужно удалить - соответственно нужна связь.

Примерно это должно выглядеть так (ИМХО конечно):
(типы даных указывать не буду)
Код

Table with users
user_id
user_login
// и другие данные поьзователя

Table with private user's photos
photo_priv_id
user_id
photo_priv_name
// и другие данные которые тебе необходимо

Table with message
mes_id
user_id
// данные сообщения

Table with message's photos
photo_mes_id
mes_id
photo_mes_name
// и другие данные которые тебе необходимо


Т.е. основная идея все данные связаны. Ты без труда можешь посмотреть какие фото у какого пользователя, какие фото в каком сообщении и т.д.


2. Структура файловой системы.
Это уже сугубо личный вопрос. Кому как удобно. Только делай проверку на совпадение имен файлов.




Это сообщение отредактировал(а) mishaSL - 17.2.2007, 20:12


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Рыжий
Дата 17.2.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Цитата(mishaSL @  17.2.2007,  20:10 Найти цитируемый пост)
Только делай проверку на совпадение имен файлов

Я думаю не нужно сохранять имена файлов, я лучше буду изменять имя на time() или подобное.
PM MAIL ICQ   Вверх
mishaSL
Дата 17.2.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Рыжий @  17.2.2007,  20:35 Найти цитируемый пост)
Я думаю не нужно сохранять имена файлов, я лучше буду изменять имя на time() или подобное. 


Зависит от того какие функции пользователи могут выполнять со своими фото. Если скажем пользователь может куда-либо вставлять свои личные фото (и ему нужно выбрать из списка) или посмотреть ссылку на фото, ему будет удобнее если имя фото первоначальное (к примеру myBigPhoto.jpg) или изменено на (MyBigPhoto_01.jpg). 

А если эти фото будут только выводиться, то это уже как тебе удобнее... 


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Рыжий
Дата 18.2.2007, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Еще рассматриваю такой вариант БД:

id  user_id          path                type           date
1       10      www.a.ru/pic.jpg      1      18.02.07 18:53
2       23      1225434587.jpg       2      19.02.07 19:57

id - уникальный id, smallint unsigned, auto_increment
user_id - id пользователя smallint unsigned
path - путь к файлу
type - enum("1","2") тип фотки - в сообщение или для себя
date - дата добавления.

А вот фотки к товарам хранить в отдельной бд - там много своих полей, которые при "простом" использовании будут NULL и все.


PM MAIL ICQ   Вверх
mishaSL
Дата 18.2.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Рыжий, возникает несколько проблем при такой структуре БД:

1.  Основная проблема: фото в сообщении не привязано к самому сообщению. При удалении сообщения будут оставаться лишние фото.

2.  В поле `path` лучше не смешивай фото хранящиеся у тебя и ссылки на фото с других сайтов.




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Рыжий
Дата 19.2.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Цитата(mishaSL @  18.2.2007,  17:24 Найти цитируемый пост)

1.  Основная проблема: фото в сообщении не привязано к самому сообщению. При удалении сообщения будут оставаться лишние фото.


Да, это так. В связи с этим решил разбить все это на отдельные БД. Ведь когда выводишь личные фотки юзера - не нужно грузить БД со всеми его фотками за всю историю...


Цитата(mishaSL @  18.2.2007,  17:24 Найти цитируемый пост)
2.  В поле `path` лучше не смешивай фото хранящиеся у тебя и ссылки на фото с других сайтов.


Как ты себе представляешь решение? Сделать еще одно поле?
PM MAIL ICQ   Вверх
mishaSL
Дата 19.2.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Рыжий @  19.2.2007,  17:24 Найти цитируемый пост)
Как ты себе представляешь решение? Сделать еще одно поле? 


Если тебе необходимо хранить отдельно этот путь, то лучше сделай связанную с сообщениями таблицу. Так будет проще управлять этими данными.



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2384 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.