Название: База данных для хранения фотографий Отправлено: dsp от Май 14, 2011, 23:18 Привет.
С бд не работал, но необходимость такая возникла. Есть программа, которая по нажатию кнопки должна подгружать фотографию. В качестве изображений выступают фотки коридоров нескольких этажей в здании. Это значит, что фотки должны иметь свою четкую последовательность и принадлежность к этажам. Вопросы: 1)Из каких таблиц и полей будет состоять бд? Мои предположения: 1 Таблица фотографий
2 Таблица дерева расположения фотографий относительно этажа
3 Таблица отношения фотографий к этажам
2) Придется писать отдельный менеджер загрузки фотографий в бд, удаления, вывода полей (для контроля правильности) (скорее всего работа будет в режиме клиент-сервер)? Спасибо. Название: Re: База данных для хранения фотографий Отправлено: joker от Май 15, 2011, 11:50 1) Не думаю что твой вариант хорошо - у тебя 2 и 3 собирать будет тяжело (если я правильно понял). Я бы сделал:
1. Этажи id name ord (порядок) 2. Фотографии id id_floor ord (порядок) dta (данные - собсна сама фотка, блоб) 2) А какие еще могут быть варианты? Твой софт - ты и сервисные функции делаешь :) Вот только в отдельной ли программе делать... Тут зависит от того, зачем делается прога. Я бы единую софтинку делал. Название: Re: База данных для хранения фотографий Отправлено: dsp от Май 15, 2011, 12:16 Думаю правильно: Если образно, то стоишь ты в начале этажа - вот ты пошел от одного его края до другого (фотки должны идти строго друг за другом). Захотел перейти на другой этаж - уже новые фотки и новый порядок.
Что касается пункта 2, то клиенту незачем иметь функции загрузки фото (на данном этапе разработки). Это скорее лишь моя "привилегия", т.к. я должен загрузить фотки, а у клиента свой софт для просмотра. Название: Re: База данных для хранения фотографий Отправлено: LisandreL от Май 15, 2011, 12:48 1)
Думаю правильно: Если образно, то стоишь ты в начале этажа - вот ты пошел от одного его края до другого (фотки должны идти строго друг за другом). То есть какой-нибудь вот такой конфигурации коридора ( с ветвлением и объединением) быть не может:Код: начало************ Такую структуру коридора (а в зданиях встречаются и значительно более сложные) вы ни одним из приведённых способов с базу не закодируете. Название: Re: База данных для хранения фотографий Отправлено: dsp от Май 15, 2011, 13:19 Структура будет такая:
1й этаж: начало 2й этаж:начало * * * * */\/\/\/\/\лестница/\/\/\/\ * * * * * * * */\/\/\/\/\лестница/\/\/\/\ * * * конец конец .... Фотки только по цетру Название: Re: База данных для хранения фотографий Отправлено: dsp от Май 15, 2011, 14:52 А если сделать такие таблицы
(http://s46.radikal.ru/i112/1105/a0/63190c5c82f1.png) Связь с первой таблицей - через id Фоток. Фоткам дать имена, например (4, 4_1, 4_2 - 4 этаж фотка первая, вторая....). Именование фотографий образует порядок следование. Либо я чего-то концептуального в построении таблиц не понимаю.... Название: Re: База данных для хранения фотографий Отправлено: MoPDoBoPoT от Май 15, 2011, 17:02 Нужнавсего лишь одна таблица с такими полями:
Название: Re: База данных для хранения фотографий Отправлено: joker от Май 15, 2011, 18:05 А если сделать такие таблицы Насчет порядка - плохая идея... как пример переход с 9 на 10, с 99 на 100 и тп.. А если формат будешь придумывать, то получишь головную боль с его упорядочиванием - не проще ли именно под порядок завести числовое поле (возможно даже с автоинкременентом).(http://s46.radikal.ru/i112/1105/a0/63190c5c82f1.png) Связь с первой таблицей - через id Фоток. Фоткам дать имена, например (4, 4_1, 4_2 - 4 этаж фотка первая, вторая....). Именование фотографий образует порядок следование. Либо я чего-то концептуального в построении таблиц не понимаю.... Да и в принципе, у тебя получается одна плоская таблица, разбитая на 2 части (чтобы труднее выбирать?) Кстати, это и отметил Павлик: Нужнавсего лишь одна таблица с такими полями:
Однако, как подсказывает практика, потом обязательно захочется "засунуть" для этажа какий-нить параметр (схему опять же в виде рисунка например) и не получится... Или у этажей названия появятся (пентхауз и тп) Имхо лучше сразу этаж в отдельную сущность Название: Re: База данных для хранения фотографий Отправлено: MoPDoBoPoT от Май 15, 2011, 18:32 Однако, как подсказывает практика, потом обязательно захочется "засунуть" для этажа какий-нить параметр (схему опять же в виде рисунка например) и не получится... Или у этажей названия появятся (пентхауз и тп) Почему это? (:Название: Re: База данных для хранения фотографий Отправлено: dsp от Май 15, 2011, 18:36 т.е. такая таблица выйдет
(http://s53.radikal.ru/i139/1105/15/4876601de304.png) а имена файлам какие лучше давать? А ссылка на файл фоток будет в столбце "Фото"? Название: Re: База данных для хранения фотографий Отправлено: LisandreL от Май 15, 2011, 23:34 А ссылка на файл фоток будет в столбце "Фото"? Если у вас клиент-серверная БД, то логичней там не ссылку (путь к файлу), а саму фотку там хранить.Иначе, как только клиент и сервер окажутся на разных машинах, а БД будут записанны локальные пути к файлу всё и сломается. см. Как записать файл в Базу Данных (http://www.prog.org.ru/topic_18085_0.html) Название: Re: База данных для хранения фотографий Отправлено: dsp от Май 16, 2011, 00:54 LisandreL, спасибо. Сейчас гляну ссылку...
Название: Re: База данных для хранения фотографий Отправлено: xokc от Май 16, 2011, 19:20 Если у вас клиент-серверная БД, то логичней там не ссылку (путь к файлу), а саму фотку там хранить. Вообще говоря, вопрос очень о том, что лучше хранить в БД файлы или ссылки на них весьма не тривиален. Есть очень много тем (например на SQL.ru), где это обсуждается. Если коротко, то правильное решение зависит от множества факторов - типа СУБД, среднем объеме файлов, их количестве, необходимости репликации БД и т.п.Иначе, как только клиент и сервер окажутся на разных машинах, а БД будут записанны локальные пути к файлу всё и сломается. Вот уж с этим вообще проблем нет - достаточно на сервере реализовать доступ клиенту к каталогу с картинками одним из доступных способов (через хранимые процедуры СУБД, FTP, NFS и т.п.).Название: Re: База данных для хранения фотографий Отправлено: LisandreL от Май 16, 2011, 23:14 Вообще говоря, вопрос очень о том, что лучше хранить в БД файлы или ссылки на них весьма не тривиален. Есть очень много тем (например на SQL.ru), где это обсуждается. Если коротко, то правильное решение зависит от множества факторов - типа СУБД, среднем объеме файлов, их количестве, необходимости репликации БД и т.п. В данном конкретной задаче большой объём не предвидится. Разумеется для больших, сложных, средне/высоко нагруженных систем будут свои нюансы, но это не тот случай.Название: Re: База данных для хранения фотографий Отправлено: dsp от Май 17, 2011, 21:12 Что должно быть в итоге:
Отдельное приложение для отображения записей базы данных. Имеет одну кнопку, которая добавляла бы целую папку, содержащую подпапки (с именами 1 floor, 2 floor...) с фотками. (http://s56.radikal.ru/i152/1105/ca/63d7474c82a5.png) Я так понимаю, тут рекурсивнй обход нужен? Зайдя в папку, например 1 floor, копировались бы имена всех фотографий в ней (фотки имели бы имена согласно шаблону №этажа_порядок: 1floor_1order, 1floor_2order...). Далее, выделяется из имени "№ этажа" и записывается в поле floor. Выделяется "порядок" и записывается в order. Загружаются фотки. Так вот заполняется таблица. Что скажете? Название: Re: База данных для хранения фотографий Отправлено: dsp от Май 20, 2011, 20:08 Почему-то не отображаются названия столбцов QSqlTableModel.
Код: dbViewer::dbViewer() Сверху: (http://s43.radikal.ru/i101/1105/6f/21cebe3697d0t.jpg) (http://radikal.ru/F/s43.radikal.ru/i101/1105/6f/21cebe3697d0.png.html) Название: Re: База данных для хранения фотографий Отправлено: dsp от Май 23, 2011, 11:54 Посмотрите пожалуйста программу для работы с бд.
Что она делает: Выбирается папка с изображениями, проверяется валидность их имени по шаблону №этажа_№порядка(1floor_1order, 4floor_22order...) кнопкой check. Кнопка start вмесете с изображениями передает информацию, взятую из имени файла (номер этажа и порядок следования фотографий), создавая таблицу на основе этих данных. Если проверка имени файла выявила неправильные имена файлов, то start блокируется. Но ничего не отображается в окне, наверно, неправильно таблицу заполняю. Помогите пожалуйста, очень надо! Название: Re: База данных для хранения фотографий Отправлено: dsp от Май 25, 2011, 14:13 Вопрос еще актуален!
|