Russian Qt Forum
Ноябрь 24, 2024, 06:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: База данных для хранения фотографий  (Прочитано 12210 раз)
dsp
Гость
« : Май 14, 2011, 23:18 »

Привет.

С бд не работал, но необходимость такая возникла.

Есть программа, которая по нажатию кнопки должна подгружать фотографию.
В качестве изображений выступают фотки коридоров нескольких этажей в здании. Это значит, что фотки должны иметь свою четкую последовательность и принадлежность к этажам.

Вопросы:

1)Из каких таблиц и полей будет состоять бд?
 Мои предположения:
  1 Таблица фотографий
  • id
  • fileName
       
  2 Таблица дерева расположения фотографий относительно этажа
  • id
  • idParentPhoto
  • номер этажа?
   
  3 Таблица отношения фотографий к этажам
  • id
  • photoid
  • floorid

2) Придется писать отдельный менеджер загрузки фотографий в бд, удаления, вывода полей (для контроля правильности) (скорее всего работа будет в режиме клиент-сервер)?

Спасибо.


 
Записан
joker
Новичок

Offline Offline

Сообщений: 49


Просмотр профиля
« Ответ #1 : Май 15, 2011, 11:50 »

1) Не думаю что твой вариант хорошо - у тебя 2 и 3 собирать будет тяжело (если я правильно понял). Я бы сделал:

1. Этажи
id
name
ord (порядок)


2. Фотографии
id
id_floor
ord (порядок)
dta (данные - собсна сама фотка, блоб)


2) А какие еще могут быть варианты? Твой софт - ты и сервисные функции делаешь Улыбающийся Вот только в отдельной ли программе делать... Тут зависит от того, зачем делается прога. Я бы единую софтинку делал.
Записан
dsp
Гость
« Ответ #2 : Май 15, 2011, 12:16 »

Думаю правильно: Если образно, то стоишь ты в начале этажа - вот ты пошел от одного его края до другого (фотки должны идти строго друг за другом). Захотел перейти на другой этаж - уже новые фотки и новый порядок.

Что касается пункта 2, то клиенту незачем иметь функции загрузки фото (на данном этапе разработки). Это скорее лишь моя "привилегия", т.к. я должен загрузить фотки, а у клиента свой софт для просмотра.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #3 : Май 15, 2011, 12:48 »

1)
Думаю правильно: Если образно, то стоишь ты в начале этажа - вот ты пошел от одного его края до другого (фотки должны идти строго друг за другом).
То есть какой-нибудь вот такой конфигурации коридора ( с ветвлением и объединением) быть не может:
Код:
начало************
          *      *
          *      *
          *      *
          *      *
          ***************конец
Здесь звёздочки - фотографии.
Такую структуру коридора (а в зданиях встречаются и значительно более сложные) вы ни одним из приведённых способов с базу не закодируете.
Записан
dsp
Гость
« Ответ #4 : Май 15, 2011, 13:19 »

Структура будет такая:

1й этаж: начало                  2й этаж:начало
                  *                                   *
                  *                                   *
                  */\/\/\/\/\лестница/\/\/\/\ *
                  *                                   *
                  *                                   *
                  *                                   *
                  */\/\/\/\/\лестница/\/\/\/\ *
                  *                                   *
               конец                             конец             ....

Фотки только по цетру

Записан
dsp
Гость
« Ответ #5 : Май 15, 2011, 14:52 »

А если сделать такие таблицы



Связь с первой таблицей - через id Фоток. Фоткам дать имена, например (4, 4_1, 4_2 - 4 этаж фотка первая, вторая....). Именование фотографий образует порядок следование.

Либо я чего-то концептуального в построении таблиц не понимаю....
Записан
MoPDoBoPoT
Гость
« Ответ #6 : Май 15, 2011, 17:02 »

Нужнавсего лишь одна таблица с такими полями:
  • id
  • photo (BLOB или имя файла)
  • floor
  • order
Записан
joker
Новичок

Offline Offline

Сообщений: 49


Просмотр профиля
« Ответ #7 : Май 15, 2011, 18:05 »

А если сделать такие таблицы



Связь с первой таблицей - через id Фоток. Фоткам дать имена, например (4, 4_1, 4_2 - 4 этаж фотка первая, вторая....). Именование фотографий образует порядок следование.

Либо я чего-то концептуального в построении таблиц не понимаю....
Насчет порядка - плохая идея... как пример переход с 9 на 10, с 99 на 100 и тп.. А если формат будешь придумывать, то получишь головную боль с его упорядочиванием - не проще ли именно под порядок завести числовое поле  (возможно даже с автоинкременентом).

Да и в принципе, у тебя получается одна плоская таблица, разбитая на 2 части (чтобы труднее выбирать?)
Кстати, это и отметил Павлик:

Нужнавсего лишь одна таблица с такими полями:
  • id
  • photo (BLOB или имя файла)
  • floor
  • order

Однако, как подсказывает практика, потом обязательно захочется "засунуть" для этажа какий-нить параметр (схему опять же в виде рисунка например) и не получится... Или у этажей названия появятся (пентхауз и тп)
Имхо лучше сразу этаж в отдельную сущность
Записан
MoPDoBoPoT
Гость
« Ответ #8 : Май 15, 2011, 18:32 »

Однако, как подсказывает практика, потом обязательно захочется "засунуть" для этажа какий-нить параметр (схему опять же в виде рисунка например) и не получится... Или у этажей названия появятся (пентхауз и тп)
Почему это? (:
Записан
dsp
Гость
« Ответ #9 : Май 15, 2011, 18:36 »

т.е. такая таблица выйдет



а имена файлам какие лучше давать?

А ссылка на файл фоток будет в столбце "Фото"?
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #10 : Май 15, 2011, 23:34 »

А ссылка на файл фоток будет в столбце "Фото"?
Если у вас клиент-серверная БД, то логичней там не ссылку (путь к файлу), а саму фотку там хранить.
Иначе, как только клиент и сервер окажутся на разных машинах, а БД будут записанны локальные пути к файлу всё и сломается.

см. Как записать файл в Базу Данных
Записан
dsp
Гость
« Ответ #11 : Май 16, 2011, 00:54 »

LisandreL, спасибо. Сейчас гляну ссылку...
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #12 : Май 16, 2011, 19:20 »

Если у вас клиент-серверная БД, то логичней там не ссылку (путь к файлу), а саму фотку там хранить.
Вообще говоря, вопрос очень о том, что лучше хранить в БД файлы или ссылки на них весьма не тривиален. Есть очень много тем (например на SQL.ru), где это обсуждается. Если коротко, то правильное решение зависит от множества факторов - типа СУБД, среднем объеме файлов, их количестве, необходимости репликации БД и т.п.

Иначе, как только клиент и сервер окажутся на разных машинах, а БД будут записанны локальные пути к файлу всё и сломается.
Вот уж с этим вообще проблем нет - достаточно на сервере реализовать доступ клиенту к каталогу с картинками одним из доступных способов (через хранимые процедуры СУБД, FTP, NFS и т.п.).
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #13 : Май 16, 2011, 23:14 »

Вообще говоря, вопрос очень о том, что лучше хранить в БД файлы или ссылки на них весьма не тривиален. Есть очень много тем (например на SQL.ru), где это обсуждается. Если коротко, то правильное решение зависит от множества факторов - типа СУБД, среднем объеме файлов, их количестве, необходимости репликации БД и т.п.
В данном конкретной задаче большой объём не предвидится. Разумеется для больших, сложных, средне/высоко нагруженных систем будут свои нюансы, но это не тот случай.
Записан
dsp
Гость
« Ответ #14 : Май 17, 2011, 21:12 »

Что должно быть в итоге:

Отдельное приложение для отображения записей базы данных.
Имеет одну кнопку, которая добавляла бы целую папку, содержащую подпапки (с именами 1 floor, 2 floor...) с фотками.



Я так понимаю, тут рекурсивнй обход нужен?

Зайдя в папку, например 1 floor, копировались бы имена всех фотографий в ней (фотки имели бы имена согласно шаблону №этажа_порядок: 1floor_1order, 1floor_2order...).

Далее, выделяется из имени "№ этажа" и записывается в поле floor. Выделяется "порядок" и записывается в order. Загружаются фотки.

Так вот заполняется таблица.

Что скажете?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.14 секунд. Запросов: 22.