Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Хранение истории изменений / 18 сообщений из 18, страница 1 из 1
08.12.2003, 20:03
    #32347031
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Это так, досужие размышления.

Значит, начнем...

Имеется любая база. Хочется в этой базе хранить историю изменений, с информацией о времени и пользователе, эти изменения сделавшим.

Для чего? А черт ее знает. Пока болею, работать не могу, а в голову всякие мысли нехорошие лезут :) М.б. хотя бы для того, чтоб пользователь мог посмотреть хронологию изменения любой записи, например, справочника.
Например, такая организации программы даст возможность посмотреть запись прихода годичной давности и увидеть в этой записи наименование контрагенда до его возможного переименования. Позволит вносить изменения в справочники. Ну и т.п.

Какие способы вижу?

Способ номер раз:
Во все таблицы добавляем поля TimeChange, Changer.
+ Максимально быстрая возможность получить состояние базы на любой момент времени.
- Хранится куча лишней информации. После изменения одной буковки любого поля создается копия всей записи

Способ номер два:
Делаем отдельную таблицу c полями
TimeChange, Changer, TypeValue, OldValue
и складываем туда все изменения.
+ Можно хранить только обновленные значения.
- Восстановить содержимое любой записи дело хоть и возможное, но дюже неудобной. Получить, скажем какой нибудь отчет за прошедшую дату вообще представляется почти фантастическим занятием.

Вот.

Поделитесь, пожалуйста, опытом. Кто-нибудь это делал в утилитарном виде (а не как "заплатка" для той или иной формочки)? Зачем? Каким способом?
...
Рейтинг: 0 / 0
08.12.2003, 20:05
    #32347033
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Transaction log
...
Рейтинг: 0 / 0
08.12.2003, 20:09
    #32347035
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
?
Может, ты и прав.
А с помощью этих лога можно поднять состояние на такой-то момент времени?
А в случае с мдб?
...
Рейтинг: 0 / 0
08.12.2003, 20:13
    #32347039
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
В SQL - да.
У MDB - писать свой.
Но все же это лучше, чем поля таблицы. ИМХО.

Хотя у меня тоже с полями. :)
...
Рейтинг: 0 / 0
08.12.2003, 20:31
    #32347047
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Спасибо :)
...
Рейтинг: 0 / 0
08.12.2003, 20:33
    #32347048
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Харррош болеть!
...
Рейтинг: 0 / 0
08.12.2003, 20:37
    #32347052
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
У нас так: при создании записи записывается время и юзер-создатель (доп.поля, никуда не денешься...). Для изменений, которые нужно отслеживать, ведется таблица heap (заполнение - на триггерах).
Зачем? Чтобы знать, какой гад поставил закупочную выше продажной, например ;-) Или знать, как изменялась цена товара с течением времени.
А вообще - болеть действительно вредно. Я вот даже не болел, а только выходной себе устроил - и то появились глупые мысли: например, сделать в базе систему сообщений типа чата, или еще - поздравлять юзеров с днем рождения ;-)
...
Рейтинг: 0 / 0
08.12.2003, 20:41
    #32347054
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
2 AlexJuice:
Если еще интересно сделать систему сообщений, то могу выслать примерчик. Фирменный, гетцовский. :)

А еще можно на net send основываться через shell и таблицу c netbios именами компов.


Млин, Остапа понесло. :))
...
Рейтинг: 0 / 0
08.12.2003, 21:22
    #32347069
Shkurenko Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Георгий.
Ого, чего ты задумал. История изменений конечно вещь хорошая, но уж больно сложная в реализации. Если с SQL Servr'ом все-же проще, триггеры могут помочь, то с MDB вообще вешалка. В одно место протоколирование не вынесешь, а распылять по куче форм, с кучей событий, где-нибудь да все равно ошибешься. ИМХО самое верное это прикрутить класс Log из примера из Гетца к отдельной базе и его использовать в критичных местах. По крайней мере, ты сможешь выдернуть время и фамилии, которые работали с объектом (справочник, журнал etc). Ну и конечно архивы баз за каждый день. Да и уверен я почему-то, что историей придется работать именно тебе.

PS Выздоравливай побыстрее. //я маленьким любил болеть, родители всякие вкусности покупали.
Чем лечишься, то? Клюквой наверно
...
Рейтинг: 0 / 0
09.12.2003, 02:25
    #32347191
AlexJuicе
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Темныймогу выслать примерчик
С удовольствием посмотрю. Хотя свой тоже интересно сделать ;)
alexjuice{at}mtu-net{.}ru
...
Рейтинг: 0 / 0
09.12.2003, 03:07
    #32347197
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Значить так.

1) Там 2 файла. Нужно в тот, в котором нет таблиц присобачить связанную таблицу из того, в котором есть таблица. :)
2) Все это дело рассчитано на то, что у тебя уже есть разделение прав доступа на уровне групп/пользователей.
3) Ну а дальше все просто.
...
Рейтинг: 0 / 0
09.12.2003, 09:34
    #32347341
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
2 Гео
Можешь поглядеть Гарину статью:
http://www.msaccess.ru/Raznoe_BigPrgOriginal.html
В начале главы "О базовой структуре системы, ее объектах и администрировании" есть описание методов работы со справочниками - не с точки зрения механизмов аудита, а с точки зрения учетных задач.
...
Рейтинг: 0 / 0
09.12.2003, 09:53
    #32347368
Артист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Log из примера из Гетца
ткните меня плиз на страницу (у меня 2002ые Гетцы)
...
Рейтинг: 0 / 0
09.12.2003, 10:03
    #32347386
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Старшие братья по разуму :) уже эту тему так много раз обсасывали , что совсем замусолили.
Но это для сиквела - для мдб я бы даже не парился - а сделал бы этот вопрос аргументом для перехода на адп.
...
Рейтинг: 0 / 0
09.12.2003, 10:15
    #32347405
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
Мы братья по разуму, сказал сумасшедший, входя в палату после процедур. :)
...
Рейтинг: 0 / 0
09.12.2003, 12:20
    #32347619
4d_monster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
А у меня в мдб работает :-(

правда юзеры используют не напрямую по сетке, а через сервер терминалов

IMHO Mon$te®
...
Рейтинг: 0 / 0
09.12.2003, 12:38
    #32347662
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
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
Спасибо. Более-менее ответил в части к Александру Шкуренко.
...
Рейтинг: 0 / 0
09.12.2003, 13:31
    #32347771
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение истории изменений
GeoЕще раз спасибо

Бр-р-р... А за что это вдруг?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Хранение истории изменений / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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