Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Динамическое добавление справочников / 25 сообщений из 44, страница 1 из 2
19.08.2009, 02:26
    #36151269
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
Вообщем суть вопроса. Есть готовый небольшой проект, который выводит несколько отчетов. Но у каждого клиента отчет немного отличается. Начальство хочет задумать какой-нибудь механизм, позволяющий на месте внедрять новые справочники и привязывать их к отчету. Причем формы должны подхватывать эти справочники и позволять вводить значения. Очень слабо представляю как это можно реализовать. Динамически добавлять таблицы или столбцы мне кажется утопией. Но и чтобы добавить колонку в отчете не очень хочется каждый раз перекомпилировать проект. Как можно поступить в этом случае?
...
Рейтинг: 0 / 0
19.08.2009, 02:37
    #36151270
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
daunito,

Кхе..Кхе.

Ну можно объединить все справочники по типу DOMAINS->DOMAIN ITEMS и свалить все справочники туда. У нас так было в одной системе. Или объединить их в похожую структуру на логическом уровне через UNION ALL и использовать полученную вьюшку вместо прямого доступа к их таблицам. Вопщем идей еще много.

Regards.
...
Рейтинг: 0 / 0
19.08.2009, 09:47
    #36151486
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
вот где то на этом форуме прочитал раньше :

Отдельная база для общих таблиц (например, справочников), процедур, функций - вполне нормальное решение.
...
Рейтинг: 0 / 0
19.08.2009, 10:11
    #36151553
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
daunito,

В чем конкретно сложность перекомпиляции проекта?
...
Рейтинг: 0 / 0
19.08.2009, 10:53
    #36151645
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
Сделать таблицу-контейнер справочников
ID, DictID, TxtField......

где DictID - код справочника, а ID - код записи в справочнике

1 1 Коля
2 1 Петя
3 1 Вася
1 2 Дворник
2 2 Директор
3 2 Бухгалтер

1=Пользователи
2=Должности
...
Рейтинг: 0 / 0
19.08.2009, 15:03
    #36152453
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
nosovвот где то на этом форуме прочитал раньше :

Отдельная база для общих таблиц (например, справочников), процедур, функций - вполне нормальное решение.А какая СУБД поддерживает FK между таблицами в разных БД?
...
Рейтинг: 0 / 0
19.08.2009, 15:37
    #36152564
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
2 Senya_L

записываю чужие полезные (на мой взгляд) мысли из этого форума в тхт файл.
полезность и правильность их не проверяю.
...
Рейтинг: 0 / 0
19.08.2009, 16:16
    #36152699
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
> Как можно поступить в этом случае?

Справочники не имеют никакого отношения к задаче. Займитесь редизайном.
...
Рейтинг: 0 / 0
19.08.2009, 18:32
    #36153144
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
дЕлается все просто

Пример.
Есть узлы классификатора "Составное изделие", который содержит "Сборка", "Комплект", "Комплекс."
При запуске система генерирует виртуальную структуру для "Составное изделие".
Отчеты на входе имеют эту виртуальную структуру.
Пользователь может ввести скоко угодно новых типов и добавить их в узел "Составное изделие".
Отчеты старые не меняются, а новых моджно добваить скоко угодно.
...
Рейтинг: 0 / 0
19.08.2009, 18:52
    #36153170
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
По поводу перекомпиляции, если каждому клиенту подгонять структуру базы под его нужды, то в конечном итоге получится куча разных приложений. Для поддержки это полный аут. Мысль слить все справочники в две таблицы у меня была, только очень много заморочек. Например, как быть с разными типами данных? Потом, как вообще научить формы цеплять новые справочники? Динамически добавлять контролы и обработчики? Например, в отчете по продажам один из наших клиентов хочет видеть еще и девичью фамилию менеджеров женского пола. Надо в форме редактирования менеджера добавить поле "девичья фамилия" и потом выводить его в отчете.
...
Рейтинг: 0 / 0
19.08.2009, 18:57
    #36153176
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
daunito,

Элементарно, Ватсон.
...
Рейтинг: 0 / 0
19.08.2009, 23:22
    #36153483
NG
NG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
2 daunito
Очень похоже, что вам не нужна куча новых справочников, а надо иметь один дополнительный (атрибуты) - в котором, как правило, три столбца:
1. код объекта;
2. название параметра (строка);
3. значение параметра (строка).
Таким образом вы добавляете новый параметр не в виде столбца (или таблицы), а как новую запись в существующую таблицу атрибутов.
С типами не заморачивайтесь - строковый тип покрывает все (вы ведь не собираетесь проводить с ними математические операции. Даже если собираетесь, то добавьте еще поле с типом параметра).
Сахават Юсифов дал вам в последнем посте наглядный пример как такая штука работает.

Для обострения восприятия добавлю еще пример:
Obj_IDParamNameParamValue1телефон123 456 78901имяГлафира1рост1711бюст941талия612наименованиеквадратное отверстие2позицияприклеено к верхнему днищу2описаниетреугольной формы диаметром 3х4
Успехов!
...
Рейтинг: 0 / 0
19.08.2009, 23:48
    #36153518
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
daunitoПо поводу перекомпиляции, если каждому клиенту подгонять структуру базы под его нужды, то в конечном итоге получится куча разных приложений. Для поддержки это полный аут.

А что, монстровидную систему с индивидуальными информационными схемами на каждого клиента поддерживать проще? Вообще говоря, суть проблем, которые нужно помнить при сопровождении, "количество поддерживающей информации", образно говоря, в обеих случаях примерно одинаково. Только в первом случае оно выливается в стандартные процедуры с помощью стандартных инструментов, а во втором - в нестандартные процедуры над все более усложняющимся продуктом с неясным исходом. Вот и сравните трудоемкости. И еще - поверьте, динамически пристегивающимися голыми справочниками Вы не удовлетворитесь, и никакой реальной задачи не покроете - рано или поздно к ним потребуется столь же динамически пристегивающаяся, пусть крохотная, но бизнес-логика, опять же индивидуальная для каждого клиента. Что тогда будете делать?

Судя по постановке задачи, отличия между клиентами незначительны. Подумайте над объединением их всех в единую "накопительную" версию (надеюсь, требования клиентов не противоречат прямо друг другу?) по традиционной технологии, а если кому что категорически не надо - лишние элементы интерфейса спрятать нехитрыми индивидуальными настройками, хоть в ini-файлах.
...
Рейтинг: 0 / 0
19.08.2009, 23:52
    #36153524
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
Cane Cat FisherПодумайте над объединением их всех в единую "накопительную" версию (надеюсь, требования клиентов не противоречат прямо друг другу?) по традиционной технологии, а если кому что категорически не надо - лишние элементы интерфейса спрятать нехитрыми индивидуальными настройками
+1
...
Рейтинг: 0 / 0
20.08.2009, 14:34
    #36154756
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
Senya_LА какая СУБД поддерживает FK между таблицами в разных БД?
А какая СУБД "поддерживает" реализацию ссылочной целостности только через FK? ;)
...
Рейтинг: 0 / 0
20.08.2009, 15:19
    #36154886
olzhas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
daunitoВообщем суть вопроса. Есть готовый небольшой проект, который выводит несколько отчетов. Но у каждого клиента отчет немного отличается. Начальство хочет задумать какой-нибудь механизм, позволяющий на месте внедрять новые справочники и привязывать их к отчету. Причем формы должны подхватывать эти справочники и позволять вводить значения. Очень слабо представляю как это можно реализовать. Динамически добавлять таблицы или столбцы мне кажется утопией. Но и чтобы добавить колонку в отчете не очень хочется каждый раз перекомпилировать проект. Как можно поступить в этом случае?

А какая у вас отчетная система? Как она работает? Как выглядит?

По поводу дополнительных полей. Делайте все через правило "один справочник одна таблица". Измените формы, что бы они динамически строились. В системных таблицах можно узнать информацию о таблице и ее полях, соответственно можно на этих данных построить запрос.
...
Рейтинг: 0 / 0
20.08.2009, 17:01
    #36155243
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
Сергей ВаскецовSenya_LА какая СУБД поддерживает FK между таблицами в разных БД?
А какая СУБД "поддерживает" реализацию ссылочной целостности только через FK? ;)А в каких СУБД поддержка FK на триггерах считается надежной? ;)

ЗЫ. Хотя есть мнение, что блокировочники в этом отношении надежней версионников, но не уверен.
...
Рейтинг: 0 / 0
20.08.2009, 17:16
    #36155275
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
Senya_LА в каких СУБД поддержка FK на триггерах считается надежной? ;)
Хм. Триггеры или работают, или нет. Я бы еще понял вопросы, связанные с правами на объекты между 2-мя БД, но насчет надежности решения в принципе?
В любом случае, можно и в рамках одной БД все сделать, рецептов тут много.
...
Рейтинг: 0 / 0
20.08.2009, 18:39
    #36155510
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
Делайте все через правило "один справочник одна таблица"Это стеб такой ?
В крупных корп. системах кол-во справочников (большинство - мелкие) может быть много сотен.
Лепить кучу одинаковых таблиц с двумя, тремя полями и кучей однотипной логики ?????? ЖЖОТЕ !
...
Рейтинг: 0 / 0
20.08.2009, 19:09
    #36155560
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
авторЭто стеб такой ?
В крупных корп. системах кол-во справочников (большинство - мелкие) может быть много сотен.
Лепить кучу одинаковых таблиц с двумя, тремя полями и кучей однотипной логики ?????? ЖЖОТЕ !
В таком случае, монстры ERP отжигают свои горшки не для крупных предприятий.
...
Рейтинг: 0 / 0
21.08.2009, 10:20
    #36156095
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
SeVaВ таком случае, монстры ERP отжигают свои горшки не для крупных предприятий.У монстров еще немало других, противоречащих нормальной логике вещей.
Чаще всего связанных с обратной совместимостью и с гибкостью для портирования на разные СУБД.

Деление на крупные/некрупные определяются только ценой ERP, но никак не функциональностью и производительностью, ИМХО.
С точки зрения количества нюансов учета в крупной и некрупной компании отличия несущественные.
...
Рейтинг: 0 / 0
21.08.2009, 13:47
    #36156804
olzhas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
LSVЭто стеб такой ?
В крупных корп. системах кол-во справочников (большинство - мелкие) может быть много сотен.
Лепить кучу одинаковых таблиц с двумя, тремя полями и кучей однотипной логики ?????? ЖЖОТЕ !
И что? Хоть тысяча справочников.
Во первых. Есть такое понятие ограничение целостности БД, как вы будете его обеспечивать, если у вас будет одна таблица на все справочники? Кодом? Триггерами? Лишняя работа и вероятность появления ошибки. Тоже самое касается безопасности, как вы будете ограничивать доступ до справочников.
Во вторых не справочники одинаковые, у кого то используются суррогатные ключи, у кого то фиксированные коды, не говоря уже о структуре справочника (количество и тип полей). Как вы это все запишите в одну таблицу? А есть же еще и древовидные справочники.
В третьих все почему то бояться лепить кучу форм для работы со справочником, мол на каждый справочник придется лепить форму. Решение простое. Создайте динамическую форму, которая читая метаданные сама строит котролы. А если решение на дельфи там вообще только запросы достаточно генерировать.
В четвертых вы подумали о производительности, о тюнинге БД, по вашей логике 100 справочников допустим в среднем по 20 значений в справочнике итого для того что бы найти нужное значение нужно перелопатить 2000 записей, хотя нужно было всего 20. У вас не будет возможности раскинуть справочники по разным табличным пространствам, что бы часто используемым выделялось бы больше ресурсов, например выделить побольше буффер пул. И еще куча нюансов.
...
Рейтинг: 0 / 0
21.08.2009, 15:47
    #36157247
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
Во первых. Есть такое понятие ограничение целостности БД, как вы будете его обеспечивать, если у вас будет одна таблица на все справочники? Кодом?Вы будете смеяться, но скажу по секрету, что практически все ERP не используют ссыл.целост. на стороне СУБД. :)
Триггеров тоже как правило ниодного.
Все проверки или в ХП или прямых запросах с клиента.
Дело в том, что проверка целостности данных не ограничивается только запретом удаления при наличии ссылки. Делать же несколько принципиально разных механизмов сложно и глупо.

Например у нас проверка это некая ХП иногда с сотнями строк нетривиального кода.

Для сотен справочников из двух полей на 5-100записей делать отдельные таблицы ?
Ну делайте, если Вам не лень !
...
Рейтинг: 0 / 0
21.08.2009, 15:55
    #36157279
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
LSV
Дело в том, что проверка целостности данных не ограничивается только запретом удаления при наличии ссылки.
+1. Забывают иногда простую вещь... даже изменение данных в так называемых справочниках, не должно нарушать представление ранее учтенных фактов в системе. Именно поэтому, во многих ERP видна денормализация, а справочник используется только для выбора "правильного" значения в момент регистрации факта.
...
Рейтинг: 0 / 0
21.08.2009, 16:48
    #36157427
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое добавление справочников
Иногда забывают еще одну простую вещь - не усложняй себе и другим жизнь на ровном месте,чем проще,тем жизнеспособней
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Динамическое добавление справочников / 25 сообщений из 44, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]