|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
Доброго времени суток. Есть система, в которую вносятся данные с бумажных носителей (документов). Тип документов одинаковый, т.е. грубо говоря это журнал в котором в электронном виде хранятся все поступившие документы определенного типа. Все это дело сохраняется в БД. Далее при необходимости документы редактируются и на основе данных в них строятся всякого рода выборки и отчеты. И все было бы хорошо, если бы с периодичностью не менялся набор полей в этих документах и соответственно алгоритмы формирования этих самых отчетов и выборок. Периодичность это 1-2 раза в год. На данный момент новая версия просто получает новую схему в БД, куда переносятся в соответствии с правилами данные из старой версии и соответственно переделанный программный код. (можно сказать что дублируется с изменениями) Сейчас пытаюсь придумать способ организовать систему так, чтобы избавиться от этих копирований и хранить данные в одной схему на протяжении всей жизни системы, с учётом вносимых в документы изменений и пр. Но что-то пока ничего не придумывается :( Не думаю что я первый кто с столкнулся с такого рода задачей, может кто подскажет где искать? ----- Если дела идут плохо, есть вероятность, что в ближайшее время они пойдут ещё хуже.(с)Мерфи ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 11:53 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
Раз в году можно и ручками поправить. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 12:33 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
Sergey_rb, дело не в том, что трудно ручками поправить, а в том что приходиться содержать старые схемы БД вместе со старым ПО, т.к. собрать отчет на момент до изменений с корректными данными в новой версии не получиться. Соответственно каждое изменение добавляет в БД ещё одну схему. Вот и ищу вариант, конечно если таковой найдется и будет экономически оправдан. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 13:25 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
DDiverSergey_rb, дело не в том, что трудно ручками поправить, а в том что приходиться содержать старые схемы БД вместе со старым ПО, т.к. собрать отчет на момент до изменений с корректными данными в новой версии не получиться. Соответственно каждое изменение добавляет в БД ещё одну схему. Вот и ищу вариант, конечно если таковой найдется и будет экономически оправдан. Это что, на каждый чих создавать новую структуру БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 13:47 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
DDiver, примеры изменений приведите. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 13:52 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
Sergey_rb, ну не на каждое изменение конечно :D guest_20040621, например добавились несколько новых полей в документ, пару старых убрали, ещё пару объединили вместе как сумму, и внесли некоторые коррективы в справочники(добавили/удалили элементы) При этом изменился алгоритм получения отчета, т.к. старых полей нет и новые нужно добавить. И это хорошо если есть хоть какая-то взаимосвязь между новой версией и старой, а то один раз было, что разбивка сумм в документе(они разбиты по пунктам и сведены в сумму) никак не корректируется с такими же пунктами в новой версии :) пришлось при конвертации переливать только агрегированные суммы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 15:44 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
Надо делать мета-описания документа. Заводить широкую таблицу с зарезервированными полями типа N1, S1, D1 и т.д. А в мета-описателях описывать назначение, тип и длину полей. Для каждой версии делать вьюхи. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 16:17 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
DDiverНе думаю что я первый кто с столкнулся с такого рода задачей, может кто подскажет где искать? Если бы СУБД поддерживали поколения структур и программ, то хранить пришлось бы только версии прикладнухи. А так, только размножением подсхем. Радикально помогает EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 16:20 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
_модDDiverНе думаю что я первый кто с столкнулся с такого рода задачей, может кто подскажет где искать? Если бы СУБД поддерживали поколения структур и программ, то хранить пришлось бы только версии прикладнухи. А так, только размножением подсхем. Радикально помогает EAV. При большом объеме сервер не потянет ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 16:54 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
DDiver, В вашем случае, я думаю, то что вы делаете является самым оптимальным решением. И молитесь что б такой бред генерировался только пару раз в год, а не пару раз в месяц. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 18:01 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
DDiverНе думаю что я первый кто с столкнулся с такого рода задачей, может кто подскажет где искать? http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2012, 19:45 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
Finsman, с начало идея показалась заманчивой, но как обычно "забыли про овраги"(с) Набор атрибутов в документе не так тривиален как например в описании товара инет магазина(как самый яркий пример EAV). В частности, есть поля заполняемые из справочника, есть зависимые поля, которые принимают значения в зависимости от 2, 3 или более установленных в документе полей. И если даже не брать это в расчёт, то по моим прикидкам реализовать алгоритм формирования UI из такого описания будет не тривиальной задачей. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 10:18 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
DDiverпо моим прикидкам реализовать алгоритм формирования UI из такого описания будет не тривиальной задачей. поля заполняемые из справочника - указывается имя справочника зависимые поля - устанавливаются функциональные зависимости между полями + поля обязательные, некорректирумые, вычислямые, скрытые, значения по умолчанию, контроль значений что еще ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 11:42 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
_мод, что-то я не понял сути сообщения. Я говорил о том, что т.к. набор атрибутов документа будет произвольный, рисовать такой произвольный документ для пользователя в окне - задача не простая. Я себе в принципе плохо представляю, как написать универсальный алгоритм вывода на экран формы с произвольным набором элементов, так чтоб с этим было удобно работать. Это же не просто в грид вывалить свойство-значение. Путь который мне видится - это хранение формы для работы с конкретной версией документа так же в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 12:28 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
DDiver, Не ставьте впереди паровоза подробности реализации. Не увлекайтесь EAV, автоматической генерацией интерфейса, или хранением форм в БД. Все это лишь варианты реализации, причем не обязательно оптимальные. Прежде всего нужно отталкиваться от факта, что у документа есть разные версии. И нужно заставить БД, интерфейс, и отчеты с этим смириться. Заставлять нужно каждого по отдельности: В БД, проще всего было бы добавлять поля. Новые добавлять, "удаленные" оставлять (новые версии документов будут их игнорировать), "измененные" - зависит от характера изменений. Если изменение обеспечивает обратную совместимость, например, увеличивается длина строкового поля - то просто менять. Если не обеспечивает - старый вариант оставлять, новый вариант добавлять с другим именем, и следующие версии процедур должны знать новое имя атрибута. Если в этот вариант не удается уложиться, например, структуры старой и новой версии в чем-то взаимоисключающи, можно создавать новые таблицы для каждой версии документа. Это, конечно, может резать глаз у ревнителей реляционной чистоты, но может быть разумным компромиссом. Третий вариант - это EAV. Он привлекает внешней "физической" простотой, но надо понимать, что с точки зрения логической модели (моделируемых документов и их изменяющихся атрибутов) - это помесь первого и второго варианта, со всеми их недостатками. После принятия решения по БД, уговариваем интерфейс. Главная идея - разделить "документ вообще" (то есть то, что должна уметь любая версия), и конкретную версию (как она это делает). Один из вариантов - абстрактный класс-документ, и конкретные наследники-версионники. Я не знаю, будут ли это формы, или просто невизуальные объекты, или объекты, вызывающие формы - это зависит от содержимого обвязки. Формы для каждой версии напишите свою. Очень может быть, что у них будет разумен общий предок. А также некий контейнер, умеющий вернуть нужную форму для каждой версии. Сюда можно будет прилепить генерацию интерфейса. Но, думаю, достоинства этого пока неочевидны. Раз в год регистрируем новый тип документа, и пишем нового наследника логики, и новую форму. При такой постановке вопроса, думаю, очевидно, что хранить формы в БД несколько надуманно. Тот же подход к отчетам. Не знаю, что за механизм формирования Вы используете, но в общих чертах: все условия, специфичные для конкретных версий, вынести в отдельные объекты-версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 19:32 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
DDiver, для вашей задачи нет типового решения. Вам придется выбрать наименее кривое из распространенных. Но на вашем месте я бы оставил все как есть. Насколько я понимаю, ваша задача так или иначе связана с официальными требованиями. Imho дешевле и правильнее потратить раз в год пару дней, чем пытаться их предвосхитить. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 19:48 |
|
Может есть типовые решения данной задачи?
|
|||
---|---|---|---|
#18+
DDiverЯ говорил о том, что т.к. набор атрибутов документа будет произвольный, рисовать такой произвольный документ для пользователя в окне - задача не простая. Надо не просто нарисовать, но и задать для каждого атрибута правила поведения, проверки, зависимости и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2012, 09:49 |
|
|
start [/forum/topic.php?fid=33&msg=37964663&tid=1547779]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 425ms |
0 / 0 |