![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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 Но… как то запутано получается Имхо Что вы можете предложить? |
|||
|
||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
1. Структура БД.
Структура БД будет очень сильно зависеть от функций которые ты хочешь выполнять с этими фотографиями. Скажем скорее всего тебе понадобится возможность просмотреть все фотографии какого-либо пользователя. Тогла необходимо хранить ID пользователя, который добавил фото. Или когда ты удаляешь сообщение в котором есть фото, то фото тебе тоже нужно удалить - соответственно нужна связь. Примерно это должно выглядеть так (ИМХО конечно): (типы даных указывать не буду)
Т.е. основная идея все данные связаны. Ты без труда можешь посмотреть какие фото у какого пользователя, какие фото в каком сообщении и т.д. 2. Структура файловой системы. Это уже сугубо личный вопрос. Кому как удобно. Только делай проверку на совпадение имен файлов. Это сообщение отредактировал(а) mishaSL - 17.2.2007, 20:12 -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
||||
|
||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Зависит от того какие функции пользователи могут выполнять со своими фото. Если скажем пользователь может куда-либо вставлять свои личные фото (и ему нужно выбрать из списка) или посмотреть ссылку на фото, ему будет удобнее если имя фото первоначальное (к примеру myBigPhoto.jpg) или изменено на (MyBigPhoto_01.jpg). А если эти фото будут только выводиться, то это уже как тебе удобнее... -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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 и все. |
|||
|
||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Рыжий, возникает несколько проблем при такой структуре БД:
1. Основная проблема: фото в сообщении не привязано к самому сообщению. При удалении сообщения будут оставаться лишние фото. 2. В поле `path` лучше не смешивай фото хранящиеся у тебя и ссылки на фото с других сайтов. -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| Рыжий |
|
||||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
Да, это так. В связи с этим решил разбить все это на отдельные БД. Ведь когда выводишь личные фотки юзера - не нужно грузить БД со всеми его фотками за всю историю...
Как ты себе представляешь решение? Сделать еще одно поле? |
||||
|
|||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Если тебе необходимо хранить отдельно этот путь, то лучше сделай связанную с сообщениями таблицу. Так будет проще управлять этими данными. -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |