|
|
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Это так, досужие размышления. Значит, начнем... Имеется любая база. Хочется в этой базе хранить историю изменений, с информацией о времени и пользователе, эти изменения сделавшим. Для чего? А черт ее знает. Пока болею, работать не могу, а в голову всякие мысли нехорошие лезут :) М.б. хотя бы для того, чтоб пользователь мог посмотреть хронологию изменения любой записи, например, справочника. Например, такая организации программы даст возможность посмотреть запись прихода годичной давности и увидеть в этой записи наименование контрагенда до его возможного переименования. Позволит вносить изменения в справочники. Ну и т.п. Какие способы вижу? Способ номер раз: Во все таблицы добавляем поля TimeChange, Changer. + Максимально быстрая возможность получить состояние базы на любой момент времени. - Хранится куча лишней информации. После изменения одной буковки любого поля создается копия всей записи Способ номер два: Делаем отдельную таблицу c полями TimeChange, Changer, TypeValue, OldValue и складываем туда все изменения. + Можно хранить только обновленные значения. - Восстановить содержимое любой записи дело хоть и возможное, но дюже неудобной. Получить, скажем какой нибудь отчет за прошедшую дату вообще представляется почти фантастическим занятием. Вот. Поделитесь, пожалуйста, опытом. Кто-нибудь это делал в утилитарном виде (а не как "заплатка" для той или иной формочки)? Зачем? Каким способом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 20:03 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Transaction log ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 20:05 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
? Может, ты и прав. А с помощью этих лога можно поднять состояние на такой-то момент времени? А в случае с мдб? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 20:09 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
В SQL - да. У MDB - писать свой. Но все же это лучше, чем поля таблицы. ИМХО. Хотя у меня тоже с полями. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 20:13 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 20:31 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Харррош болеть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 20:33 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
У нас так: при создании записи записывается время и юзер-создатель (доп.поля, никуда не денешься...). Для изменений, которые нужно отслеживать, ведется таблица heap (заполнение - на триггерах). Зачем? Чтобы знать, какой гад поставил закупочную выше продажной, например ;-) Или знать, как изменялась цена товара с течением времени. А вообще - болеть действительно вредно. Я вот даже не болел, а только выходной себе устроил - и то появились глупые мысли: например, сделать в базе систему сообщений типа чата, или еще - поздравлять юзеров с днем рождения ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 20:37 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
2 AlexJuice: Если еще интересно сделать систему сообщений, то могу выслать примерчик. Фирменный, гетцовский. :) А еще можно на net send основываться через shell и таблицу c netbios именами компов. Млин, Остапа понесло. :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 20:41 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Георгий. Ого, чего ты задумал. История изменений конечно вещь хорошая, но уж больно сложная в реализации. Если с SQL Servr'ом все-же проще, триггеры могут помочь, то с MDB вообще вешалка. В одно место протоколирование не вынесешь, а распылять по куче форм, с кучей событий, где-нибудь да все равно ошибешься. ИМХО самое верное это прикрутить класс Log из примера из Гетца к отдельной базе и его использовать в критичных местах. По крайней мере, ты сможешь выдернуть время и фамилии, которые работали с объектом (справочник, журнал etc). Ну и конечно архивы баз за каждый день. Да и уверен я почему-то, что историей придется работать именно тебе. PS Выздоравливай побыстрее. //я маленьким любил болеть, родители всякие вкусности покупали. Чем лечишься, то? Клюквой наверно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 21:22 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Темныймогу выслать примерчик С удовольствием посмотрю. Хотя свой тоже интересно сделать ;) alexjuice{at}mtu-net{.}ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 02:25 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Значить так. 1) Там 2 файла. Нужно в тот, в котором нет таблиц присобачить связанную таблицу из того, в котором есть таблица. :) 2) Все это дело рассчитано на то, что у тебя уже есть разделение прав доступа на уровне групп/пользователей. 3) Ну а дальше все просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 03:07 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
2 Гео Можешь поглядеть Гарину статью: http://www.msaccess.ru/Raznoe_BigPrgOriginal.html В начале главы "О базовой структуре системы, ее объектах и администрировании" есть описание методов работы со справочниками - не с точки зрения механизмов аудита, а с точки зрения учетных задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 09:34 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Log из примера из Гетца ткните меня плиз на страницу (у меня 2002ые Гетцы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 09:53 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Старшие братья по разуму :) уже эту тему так много раз обсасывали , что совсем замусолили. Но это для сиквела - для мдб я бы даже не парился - а сделал бы этот вопрос аргументом для перехода на адп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 10:03 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
Мы братья по разуму, сказал сумасшедший, входя в палату после процедур. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 10:15 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
А у меня в мдб работает :-( правда юзеры используют не напрямую по сетке, а через сервер терминалов IMHO Mon$te® ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 12:20 |
|
||
|
Хранение истории изменений
|
|||
|---|---|---|---|
|
#18+
2Темный\r Еще раз спасибо.\r \r 2Александр Шкуренко\r > Если с SQL Servr\'ом все-же проще, триггеры могут помочь\r Обождите. Может, это я поторопился, но мне показалось со слов Темного,\r что "включение лога" само по себе снимает вопрос, без дополнительных \r телодвижений. Сейчас хожу по ссылкам Сенина Виктора, ищу похожий\r вопрос.\r \r Хаха 2 раза:\r \r \r Jimmy\r Member\r \r Откуда: г.Москва\r Сообщений: 1383 \r Для более-менее адекватного ответа нужно в вопросе указать, как будут использоваться эти данные. Например, можно понять так:\r \r 1. Для архива, использоваться крайне редко в специфических ситуациях, скорострельность в данном случае особой роли не играет\r \r 2. Будет использоваться для онлайнового анализа (OLAP)\r \r 3. Будет использоваться в транзакционной БД для построения временно-зависимых наборов данных. В качестве исторических атрибутов будут использованны несколько полей (не все) таблицы. Скорострельность имеет большое значение.\r \r Ну и ответы:\r \r 1. Используй архивную БД\r \r 2. Используй ROLAP схему хранения + MS Analysis Service + OLAP клиента\r \r 3. А здесь уже есть варианты:\r \r -- при обновлении записи не переписывать ее, а добавлять в ту-же таблицу + дату обновления + признак актуальности записи (чтобы избежать анализа дат при запросе)\r \r -- хранить исторические атрибуты в виде отдельной таблицы с признаком актуальности и датой обновления\r \r Недостатки и достоинства сам определи для твоего конкретного случая. \r Это отсюда. Там же еще одна ссылка, подтверждающай эти слова.\r \r > Чем лечишься, то? Клюквой наверно \r \r Ею, млин \r \r 2ЛП\r Да, собственно об 1С-е я и думал, когда этот вопрос вырос. Уж больно красиво там задумано это самое журналирование изменений и разграничение прав. Именно не как временная мера для одной-другой формы, а на уровне ядра программы. Тоже такую хочу. Тем паче в 1С это сделано на основе dbf.\r \r 2Сенин Виктор\r Спасибо. Более-менее ответил в части к Александру Шкуренко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 12:38 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32347341&tid=1677763]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 437ms |

| 0 / 0 |
