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

Кхе..Кхе.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для сотен справочников из двух полей на 5-100записей делать отдельные таблицы ?
Ну делайте, если Вам не лень !
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36157279
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV
Дело в том, что проверка целостности данных не ограничивается только запретом удаления при наличии ссылки.
+1. Забывают иногда простую вещь... даже изменение данных в так называемых справочниках, не должно нарушать представление ранее учтенных фактов в системе. Именно поэтому, во многих ERP видна денормализация, а справочник используется только для выбора "правильного" значения в момент регистрации факта.
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36157427
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда забывают еще одну простую вещь - не усложняй себе и другим жизнь на ровном месте,чем проще,тем жизнеспособней
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36157457
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaИногда забывают еще одну простую вещь - не усложняй себе и другим жизнь на ровном месте,чем проще,тем жизнеспособней
именно поэтому так и делают. чтобы не усложнять и быть более жизнеспособней
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36157917
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ВаскецовSenya_LА в каких СУБД поддержка FK на триггерах считается надежной? ;)
Хм. Триггеры или работают, или нет. Я бы еще понял вопросы, связанные с правами на объекты между 2-мя БД, но насчет надежности решения в принципе?
В любом случае, можно и в рамках одной БД все сделать, рецептов тут много.А Вы загляните вот сюда и спросите про надежность FK на триггерах. Не между разными БД (такого в FB нет). У версионников есть свои особенности, знаете ли.
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36158001
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при чем здесь FK, триггеры и прочие механизмы СУБД? нить теряется...
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36158069
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нить начинает терятся,когда вводятся усложнения на ровном месте.Если одно измение может выстерлить шрапнелью по всей системе,то кому это нужно?Все эти супер справочники,мега слои во время дальнейшего развития, имеют тенденцию к разбуханию и в итоге, никто эту кашу месить не может,ее просто выбрасывают
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36158154
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

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

Даже еще проще: и классификаторы, и справочники - частный случай тезауруса.
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36159546
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSVВсе проверки или в ХП или прямых запросах с клиента.
У вас наверное и все таблицы закрыты и обращение идет только через хранимые процедуры? :)
Знаем мы такое проходили. Ничего хорошего это не сулит. в большинстве своем куча лишнего кода, где в начале каждой хранимки идет проверка, а может ли пользователь что то делать.

LSV
Дело в том, что проверка целостности данных не ограничивается только запретом удаления при наличии ссылки. Делать же несколько принципиально разных механизмов сложно и глупо.
Например у нас проверка это некая ХП иногда с сотнями строк нетривиального кода.

Тут проблема в том что это проверка помогает от случайных ошибок. Проверка работает на самой таблице, что дает вам гарантию что кто то в обход вашей ХП не внесет не корректные данные.
Плюс дает информацию о структуре БД, сразу можно посмотреть куда ссылается то или иное поле.
Я не говорю что ваш подход не правильный, однако его тяжело соблюдать. Люди меняются, с документацией как всегда туго

LSV
Для сотен справочников из двух полей на 5-100записей делать отдельные таблицы ?
Ну делайте, если Вам не лень !

На самом деле это только кажется что плодить кучу справочников это сложно. Написать create table не так уж и сложно.

p.s. возможно мы по разному смотрим на БД, я на нее смотрю с точки зрения СУБД, а вы с точки зрения приложения.
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36159595
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> На самом деле критерий очень прост

Даже еще проще: и классификаторы, и справочники - частный случай тезауруса.
Конечно ( учитывая их взаимосвязи)
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36164147
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olzhasLSVЭто стеб такой ?
В крупных корп. системах кол-во справочников (большинство - мелкие) может быть много сотен.
Лепить кучу одинаковых таблиц с двумя, тремя полями и кучей однотипной логики ?????? ЖЖОТЕ !
И что? Хоть тысяча справочников.
Во первых. Есть такое понятие ограничение целостности БД, как вы будете его обеспечивать, если у вас будет одна таблица на все справочники? Кодом? Триггерами?

Ох уж эти ограничения целостности.... Прямо священная корова какая-то....

Да на ошибки, вызванные нарушением ограничений целостности приходится, дай бог, 5% от всех проблем. Даже на системах, где такие ограничения реализуются "никак".
Все остальные проблемы - бизнес-логика...

Я ставить надежность ограничения впереди надежности бизнес-логики - странно, по меньшей мере...
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36164217
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1,

ОГраничение целостности не только для физической , но и семантической целостности.Представь -вместо "штук" в поле "едизм" "Материал"а появляется "Башкурдистан".
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36164521
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовНиколай1,

ОГраничение целостности не только для физической , но и семантической целостности.Представь -вместо "штук" в поле "едизм" "Материал"а появляется "Башкурдистан".

Я говорю о том, что опасность этой проблемы преувеличина.
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36165014
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1,

да нет.
смотри. надо задать отношение между элементами цеха (конкретного, элементы других цехв не могут быть тут)
а у нас как обычно таблица "Цеха", "Структура цеха" (Цех, Структурный элемент цеха), "Структурный элемент цеха" (Элементы цеховые)
И (Отношение) "Стр эл цеха", "Стр эл цеха" "блабла".
Ка не дать возможность пользователью вводить туфту????
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36165017
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36165019
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36165022
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36165820
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сахават ЮсифовКа не дать возможность пользователью вводить туфту????
Правильно запрограммировать интерфейс :)
Если в проге нет ошибок, то проверка ссылочной целостности - пустая трата времени и проблемы при администрировании
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36166372
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,

Нет. Такой подход неприемлем. Интерфейс только отражает, а целостность должна быть до интерфейса. а не то придется на каждый чих свою форму прикручивать.
...
Рейтинг: 0 / 0
Динамическое добавление справочников
    #36166376
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прога интерпретирует вышеуказанные схемы и генерирует интерфейс.
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Динамическое добавление справочников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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