|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.08.2015, 01:50 | #1 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
Посоветуйте привязку картинки к записи
Доброе время суток, форумчане.
У меня есть таблица птиц (bird), с их голосами (в таблице service), с полями: Код:
До этого момента было все замечательно: пользователь становился на запись с птицей, просматривал ее характеристики, и если хотел нажимал кнопку (с динамиком), и отдельным запросом подкачивался голос. Теперь к каждой птице, добавится ее одна или несколько картинок (или фото), скорее всего одна. Картинка должна будет отображаться всегда (при перемещении по списку птиц), если она есть в БД. Теперь наверно придется делать все таки отдельную таблицу (н-р «features») с полями: id, voice, image т.е. таблицу с id, и двумя полями типа blob (voice и image), т.е. не т.к. в таблице service. А в табл. bird, поле с ссылкой на id в табл. features. Связку Master-detail – делать не хотелось бы (вытягивать все blob`ы в dataset), как-то не очень… Есть еще вариант: «в событии OnDataChange (TDataSource) написать запуск таймера с некоторой задержкой, много большей чем автоповтор клавиатуры. А уже по срабатыванию этого таймера - загружать картинки, с помощью отдельного запроса, через какой-нибудь TIDQuery». Вопрос: -- Как будет правильнее поступить в этой ситуации? Заранее спасибо. P.S. В табл. "bird", записей с одно й той же птицей может быть несколько (не спрашивайте почему) Последний раз редактировалось KBO; 11.08.2015 в 01:55. |
11.08.2015, 07:37 | #2 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Делать так:
Таблица Birds id - собственное name - имя, название птицы description - описание птицы здесь же можно надобавлять Ваши параметры Таблица Images Id - собственное birds - ссылка на птицу img - сам рисунок Таблица Voices Id - собственное birds - ссылка на птицу voice - сам голос Это кошерно. Это принципы реляционных БД. Это много картинок и голосов к птице, то есть это масштабируемость. Делать так надо сразу и не изобретать велосипед. Далее сначала строится БД, потом под нее делается программа оболочка. Именно не соблюдение элементарных принципов проектирования приводит к таким проблемам. Цитата:
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 11.08.2015 в 08:08. |
||
11.08.2015, 10:57 | #3 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
О "Master-detail"-
Это например, если выборка например 500 записей птиц (в dataset), тогда, какие же объемы будут у dataset`ов "Images" и "Voices"? А если это еще и по сети будет грузиться, то вообще... Последний раз редактировалось KBO; 11.08.2015 в 11:00. |
11.08.2015, 11:11 | #4 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Картинки и звуки не надо сразу все грузить, а подгружать по мере необходимости. В OnAfterScroll например
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
11.08.2015, 11:20 | #5 | |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
Цитата:
Звуки и так грузятся, только по нажатию определенной кнопки, т.е. не всегда. А насчет дублей я и сам знаю, что нарушил несколько правил РБД, только не знаю пока как от них избавиться А вот то, что "Image" и "Voice" разносить по разным таблицам - может можно в одну? и добавить в нее поле "Description" и записывать в него "Image" и "Voice" соответственно. Конечно я не против нескольких таблиц. но их в БД и так 207, и запросы писать в одну таблицу как-то проще по-моему. Но конечно, если в разные, то в разные... Последний раз редактировалось KBO; 11.08.2015 в 11:32. |
|
11.08.2015, 12:32 | #6 | |||||||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 11.08.2015 в 12:35. |
|||||||
11.08.2015, 12:58 | #7 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
С голосами понятно, я их подгружаю по нажатию отдельной кнопки (благо, что к каждой птице пока всего одна запись голоса)
А вот картинки, в Master-detail, как я выше писал, что будет, если пользователь просто будет жать кнопку "вверх", "вниз" (УДЕРЖИВАЯ их), находясь на списке птиц. Этож запросы (where birds=id птицы) с картинками, будут "летать" туда-суда? точнее только на клиент Последний раз редактировалось KBO; 11.08.2015 в 13:07. |
11.08.2015, 13:18 | #8 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
||
11.08.2015, 13:27 | #9 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
да, я знаю, с задержкой...
|
11.08.2015, 14:13 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Далась эта задержка. А попробовать без неё и посмотреть на поведение программы. И как эта задержка будет нервировать пользователя в голову не приходило?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать привязку программы? | SawaMEN | Windows | 1 | 27.11.2013 13:05 |
post (чекер на привязку) | AmbaQ | Работа с сетью в Delphi | 10 | 27.01.2013 15:08 |
Динамически изменить привязку контролов | Тоба | Win Api | 5 | 02.11.2012 21:35 |
как сделать привязку image1 к image2 | win_api | Общие вопросы Delphi | 7 | 13.03.2012 20:26 |
получение картинки по на жатию на записи в дб грид | Lokos | БД в Delphi | 2 | 03.03.2010 07:38 |