![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Я создаю сайт что-то вроде фотогалереи.. В БД есть таблица зарегистрированных пользователей(имя, логин, пароль и т.д.) Каждая фотка добавляемая пользователем имеет несколько параметров: описание, дата добавления, тематика и т.д.. Как лучше хранить все эти фотки? В БД создать табличку в которой будет храниться кроме описания, даты добавления, тематики и т.д. еще и путь к фото на сервере.. Или Может лучше и само фото в БД хранить? Ведь при закачке фотки на сервер имя и расширение фотки может совпасть с другой фоткой, той которая уже кем-то другим была закачена..
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Я в веб-дизайне ничего не понимаю, но с БД работаю много. Я бы сделал именно ссылку на картинку в базе. А новые файлы с картинками можно, к примеру, переименовывать для хранения на сайте, добавляя дату и время закачки.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Данкинг, спасибо, я примерно как-то так и хотел сделать.. но у меня еще возник спорный вопрос.. Если я хочу разделить фотки по тематике, например: спорт, отдых, машины и т.д.. А на сайте можно было выводить все фотки какой-нибудь тематики.. Так вот при выводе фоток какой-то тематики, чтобы побыстрее все грузилось, я решил создать по таблице по каждой тематике.. Все бы хорошо, но.. Как можно сделать тогда чтобы выводились все фотки загруженные каким-то пользователем? Ведь придется по всем этим таблицам искать.. И каждому пользователю по таблице с инфой загруженных им фоток тоже не очень хочется создавать..
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Ну да, по таблицам, на первый взгляд я других вариантов не нахожу. Иметь таблицу пользователей с присвоенными каждому уникальными номерами, а в соответствующих таблицах - номера этих пользователей. Затем запросы обычные делать.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
ИМХО если будет ОЧЕНЬ МНОГО фоток - долго грузиться будет.. Запросы то делать можно и работать будет.. Только вот сколько по времени.. Это ведь нужно по всем таблицам пробегать в поиске нужного номера пользователя.. Мой вопрос в этом и заключался, можно ли как-то подругому организовать БД, чтобы побыстрее грузилось.. ![]() Это сообщение отредактировал(а) Dmitry_177 - 28.11.2007, 01:55 |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Да вроде остальные варианты уже извращённые будут, этот - самый естественный. Ну, можно одну таблицу создать с кодами рубрик и кодами пользователей, но объём данных же от этого не уменьшится, да и сама эта таблица до каких размеров разрастётся. Хотя, с другой стороны, в этом случае открывать придётся только её одну, а не несколько...
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
конечно - общую для всех тематик таблицу делать. иначем как ты будешь собирать "все фотки пользователя"? динамически формировать sql низзя, количество категорий меняется... Значит, тебе придетсмя постоянно править запросы. Вдохновляет такое? Меня - нет. Кроме того, такие вещи, как "слить несколько категонрий в одну" или "выделить фото с категориями `Человек` и `Животное` в категорию `Алкоголики с домашними питомцами`" или "найти все фоты, у которых не указана категория" и т.п. будет делать одним запросом на базе одной таблицы. разве это не хорошо? а первоначальный вариант с N таблиц если и будет адекватным решением, то не в этой вселенной
![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Ну стандартная же задача.
Фоты хранятся на диске. В БД хранится путь к фотке, ее нынешнее имя (оно синтезируется при загрузке, например = ID записи о фотке в таблице фоток), ее исходное имя (разумно отдать ее при скачивании именно с тем именем, с которым ее загружали, не так ли?) и прочую инфу. Категорирование фоток - типичная задача построения связи много-ко-много и решается созданием таблицы соответствий (ID фотки - ID категории). -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Dmitry_177 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
В принципе да.. Тогда тут встает немного другой вопрос.. При сохранении фотки на сервере уже нужно знать ID фотки.. Мы же пока не знаем какой будет ID фотки в новой записи в таблице.. Т.е. нужно сначала записать инфу к фотке в таблицу, потом выбрать ID фотки сравнив эту же записанную инфу.. Т.е. примерно так:
Потом уже узнав ID фотки можно присваивать его фотке и сохранять ее на сервере.. Я придумал такую штуку.. Но мне не очень нравится этот механизм тем что только что записали инфу, и потом ее же ищем в таблице.. Может можно что-то получше придумать? У меня база MySQL если что.. Может там полезная функция есть какая.. Может кто знает? Это сообщение отредактировал(а) Dmitry_177 - 28.11.2007, 21:09 |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Единственный способ, который ГАРАНТИРУЕТ получение правильного ID. Кстати, я бы хранил в таблице TimeStamp, а не только дату... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
intDex |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 22.12.2007 Репутация: нет Всего: нет |
тип данных BLOB.
|
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 7 Всего: 44 |
Dmitry_177, а СУБД какая, может и подскажут нормальный вариант возврата ID фотки.
Опять же на чем пишется web-морда? Можно в имя фотки ID сессии добавить или GUID. Вариантов много. Добавлено @ 09:35 Кстати в
Это сообщение отредактировал(а) Deniz - 22.12.2007, 09:37 -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
Anark1 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: 2 Всего: 11 |
Выходит, что у одной картинки может быть несколько категорий ? Значит запрос
работать не будет. Хотя, по моему, автору темы достаточно связи один ко многим. И запрос для связанных таблиц будет вроде
А по поводу хранения по ссылке или в BLOB, так это заезженная тема. Если необходимо обеспечить независимость от системы папок и файлов на машине-сервере, то лучше использовать BLOB, в остальных случаях - по ссылке. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |