powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Может есть типовые решения данной задачи?
18 сообщений из 18, страница 1 из 1
Может есть типовые решения данной задачи?
    #37963712
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.
Есть система, в которую вносятся данные с бумажных носителей (документов). Тип документов одинаковый, т.е. грубо говоря это журнал в котором в электронном виде хранятся все поступившие документы определенного типа. Все это дело сохраняется в БД. Далее при необходимости документы редактируются и на основе данных в них строятся всякого рода выборки и отчеты.
И все было бы хорошо, если бы с периодичностью не менялся набор полей в этих документах и соответственно алгоритмы формирования этих самых отчетов и выборок. Периодичность это 1-2 раза в год.
На данный момент новая версия просто получает новую схему в БД, куда переносятся в соответствии с правилами данные из старой версии и соответственно переделанный программный код. (можно сказать что дублируется с изменениями)
Сейчас пытаюсь придумать способ организовать систему так, чтобы избавиться от этих копирований и хранить данные в одной схему на протяжении всей жизни системы, с учётом вносимых в документы изменений и пр.
Но что-то пока ничего не придумывается :(

Не думаю что я первый кто с столкнулся с такого рода задачей, может кто подскажет где искать?
-----
Если дела идут плохо, есть вероятность, что в ближайшее время они пойдут ещё хуже.(с)Мерфи
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37963819
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз в году можно и ручками поправить.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37963937
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rb, дело не в том, что трудно ручками поправить, а в том что приходиться содержать старые схемы БД вместе со старым ПО, т.к. собрать отчет на момент до изменений с корректными данными в новой версии не получиться. Соответственно каждое изменение добавляет в БД ещё одну схему. Вот и ищу вариант, конечно если таковой найдется и будет экономически оправдан.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37964006
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiverSergey_rb, дело не в том, что трудно ручками поправить, а в том что приходиться содержать старые схемы БД вместе со старым ПО, т.к. собрать отчет на момент до изменений с корректными данными в новой версии не получиться. Соответственно каждое изменение добавляет в БД ещё одну схему. Вот и ищу вариант, конечно если таковой найдется и будет экономически оправдан.

Это что, на каждый чих создавать новую структуру БД?
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37964019
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DDiver, примеры изменений приведите.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37964309
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rb, ну не на каждое изменение конечно :D

guest_20040621, например добавились несколько новых полей в документ, пару старых убрали, ещё пару объединили вместе как сумму, и внесли некоторые коррективы в справочники(добавили/удалили элементы)
При этом изменился алгоритм получения отчета, т.к. старых полей нет и новые нужно добавить.
И это хорошо если есть хоть какая-то взаимосвязь между новой версией и старой, а то один раз было, что разбивка сумм в документе(они разбиты по пунктам и сведены в сумму) никак не корректируется с такими же пунктами в новой версии :) пришлось при конвертации переливать только агрегированные суммы.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37964363
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо делать мета-описания документа.
Заводить широкую таблицу с зарезервированными полями типа N1, S1, D1 и т.д.
А в мета-описателях описывать назначение, тип и длину полей.
Для каждой версии делать вьюхи.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37964368
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DDiverНе думаю что я первый кто с столкнулся с такого рода задачей, может кто подскажет где искать?

Если бы СУБД поддерживали поколения структур и программ, то хранить пришлось бы только версии прикладнухи. А так, только размножением подсхем. Радикально помогает EAV.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37964440
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модDDiverНе думаю что я первый кто с столкнулся с такого рода задачей, может кто подскажет где искать?

Если бы СУБД поддерживали поколения структур и программ, то хранить пришлось бы только версии прикладнухи. А так, только размножением подсхем. Радикально помогает EAV.

При большом объеме сервер не потянет
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37964538
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiver,

В вашем случае, я думаю, то что вы делаете является самым оптимальным решением. И молитесь что б такой бред генерировался только пару раз в год, а не пару раз в месяц.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37964663
Фотография Finsman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiverНе думаю что я первый кто с столкнулся с такого рода задачей, может кто подскажет где искать?

http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37965148
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Finsman, с начало идея показалась заманчивой, но как обычно "забыли про овраги"(с)
Набор атрибутов в документе не так тривиален как например в описании товара инет магазина(как самый яркий пример EAV).
В частности, есть поля заполняемые из справочника, есть зависимые поля, которые принимают значения в зависимости от 2, 3 или более установленных в документе полей. И если даже не брать это в расчёт, то по моим прикидкам реализовать алгоритм формирования UI из такого описания будет не тривиальной задачей.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37965324
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DDiverпо моим прикидкам реализовать алгоритм формирования UI из такого описания будет не тривиальной задачей.
поля заполняемые из справочника - указывается имя справочника
зависимые поля - устанавливаются функциональные зависимости между полями
+ поля обязательные, некорректирумые, вычислямые, скрытые, значения по умолчанию, контроль значений
что еще ?
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37965430
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,
что-то я не понял сути сообщения.
Я говорил о том, что т.к. набор атрибутов документа будет произвольный, рисовать такой произвольный документ для пользователя в окне - задача не простая. Я себе в принципе плохо представляю, как написать универсальный алгоритм вывода на экран формы с произвольным набором элементов, так чтоб с этим было удобно работать. Это же не просто в грид вывалить свойство-значение.
Путь который мне видится - это хранение формы для работы с конкретной версией документа так же в БД.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37966332
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiver,

Не ставьте впереди паровоза подробности реализации. Не увлекайтесь EAV, автоматической генерацией интерфейса, или хранением форм в БД. Все это лишь варианты реализации, причем не обязательно оптимальные.

Прежде всего нужно отталкиваться от факта, что у документа есть разные версии. И нужно заставить БД, интерфейс, и отчеты с этим смириться. Заставлять нужно каждого по отдельности:

В БД, проще всего было бы добавлять поля. Новые добавлять, "удаленные" оставлять (новые версии документов будут их игнорировать), "измененные" - зависит от характера изменений. Если изменение обеспечивает обратную совместимость, например, увеличивается длина строкового поля - то просто менять. Если не обеспечивает - старый вариант оставлять, новый вариант добавлять с другим именем, и следующие версии процедур должны знать новое имя атрибута.

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

Третий вариант - это EAV. Он привлекает внешней "физической" простотой, но надо понимать, что с точки зрения логической модели (моделируемых документов и их изменяющихся атрибутов) - это помесь первого и второго варианта, со всеми их недостатками.

После принятия решения по БД, уговариваем интерфейс. Главная идея - разделить "документ вообще" (то есть то, что должна уметь любая версия), и конкретную версию (как она это делает). Один из вариантов - абстрактный класс-документ, и конкретные наследники-версионники. Я не знаю, будут ли это формы, или просто невизуальные объекты, или объекты, вызывающие формы - это зависит от содержимого обвязки.

Формы для каждой версии напишите свою. Очень может быть, что у них будет разумен общий предок. А также некий контейнер, умеющий вернуть нужную форму для каждой версии. Сюда можно будет прилепить генерацию интерфейса. Но, думаю, достоинства этого пока неочевидны.

Раз в год регистрируем новый тип документа, и пишем нового наследника логики, и новую форму. При такой постановке вопроса, думаю, очевидно, что хранить формы в БД несколько надуманно.

Тот же подход к отчетам. Не знаю, что за механизм формирования Вы используете, но в общих чертах: все условия, специфичные для конкретных версий, вынести в отдельные объекты-версии.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37966350
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DDiver, для вашей задачи нет типового решения. Вам придется выбрать наименее кривое из распространенных.

Но на вашем месте я бы оставил все как есть. Насколько я понимаю, ваша задача так или иначе связана с официальными требованиями. Imho дешевле и правильнее потратить раз в год пару дней, чем пытаться их предвосхитить.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37966801
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DDiverЯ говорил о том, что т.к. набор атрибутов документа будет произвольный, рисовать такой произвольный документ для пользователя в окне - задача не простая.
Надо не просто нарисовать, но и задать для каждого атрибута правила поведения, проверки, зависимости и т.д.
...
Рейтинг: 0 / 0
Может есть типовые решения данной задачи?
    #37996390
lookat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DDiver,

Можно посмотреть в сторону MongoDB или Cache.

Удачи.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Может есть типовые решения данной задачи?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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