powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Восстановление логически удаленных записей
13 сообщений из 38, страница 2 из 2
Восстановление логически удаленных записей
    #35139957
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 _мод
> 1. журналирование только с целью аудита
Поясните
> 2. изменения не таблиц БД , а прикладных объектов
Что подразумевается под прикладными объектами?
> 3 сохранять было-стало
Так то, что стало и так сохраняется в рабочей таблице?
> 4 сохранять не коды, а понятные тексты
Вот я и спрашиваю, как же мне это сделать
> все в одной таблице аудита
Ну да
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35140630
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КД
> 1. журналирование только с целью аудита
Поясните
Т.е. журнал не используется для восстановления состояния объекта на дату. Для этого есть история объектов.
КД
Что подразумевается под прикладными объектами?
Журнал читает конечный пользователь, для него таблиц БД не существует, только объекты. Например, сотрудник - это не строка в БД, а объект со свойствами.

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

> Журнал читает конечный пользователь, для него таблиц БД не существует, только объекты. Например, сотрудник - это не строка в БД, а объект со свойствами.
Это ясно.

> Так изменений-то может быть много, а история состояний объекта может и не хранится.
А чем тогда изменение отличается от истории состояния? Изменение затрагивает один атрибут, а состояние - это все атрибуты? Если так, то задача ставится так, что надо посмотреть именно изменение одного атрибута. Написал, и задумался, а что, если и состояния тоже?

> В журнал записывать видимые тексты, т.е. не код товара, а его шифр+наименование.
В одно поле общей таблицы истории, предназначенное для этого, можно сделать конкатенацию, только вот смысл? Тогда может хватит и наименования? Все равно код ни о чем не скажет...
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35143259
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КДА чем тогда изменение отличается от истории состояния?
Лично я храню и журнал для аудита и историю состояний объекта. Дело в том что в журнал записываются все изменения, а история сохраняется не всегда, а только когда действительно надо.
КДТогда может хватит и наименования? Все равно код ни о чем не скажет...
Часто полное наименование объекта состоит из шифра+имени (шифр<>ID). Например:
АБС-123 Колесо большое
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35145609
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мой вариант журнала для истории изменений приемлем для выполнения вышеобозначенной задачи?
Если можно, опишите варианты, которые используете Вы.
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35146275
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КДЕсли можно, опишите варианты, которые используете Вы.
Журнал аудита:
1. создание объекта: кто, когда
2. изменение св-ва объекта: кто, когда, имя св-ва, было, стало
3. удаление объекта: перенос объекта в список удаленных + кто, когда
+ по каждому объекту ведется история его версий: текущая версия + история по датам
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35156900
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех с прошедшим праздником!
2 _мод
Спасибо большое!
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35179574
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот еще один вопрос по таблице изменений. Я думаю, что, помимо сохраненного значения поля, надо еще заносить информацию о промежутке времени, когда оно таковым было. Можно было бы хранить просто дату создания записи, и тогда мы бы знали дату, ДО которой значение было таким. Но если нам потребуется знать каким значение этого поля этой записи было на такую-то дату, придется делать вывернутый запрос. В тоже время если сделать поле в исторической таблице С_КАКОЙ_ДАТЫ, то я не знаю, как вставить эту информацию. Или все-таки через запрос?
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35186148
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никто ничего не посоветует?
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35186723
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДНикто ничего не посоветует?

С датами поосторожнее. Простой пример:

exec :a := sysdate
insert into t (dt) values (:a);

некоторое время тото там делаем, при этом в силу изоляции транзакций наш insert никто не видит.

exec :b := sysdate
insert into t (dt) values (:b);
commit;

записи с датами :a и :b стали видны одновременно, однако ни значение :b ни тем более значение :a не отражают время, когда они стали видны.
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35187215
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КДНикто ничего не посоветует?
Дата ДО или дата С - это одно и тоже.
Для дата ДО запрос простой:
Код: plaintext
1.
select * from (select * from t where .... and dat<=<дата> order by dat [desc]) where rownum= 1 ;
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35189682
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод КДНикто ничего не посоветует?
Дата ДО или дата С - это одно и тоже.
Для дата ДО запрос простой:
Код: plaintext
1.
select * from (select * from t where .... and dat<=<дата> order by dat [desc]) where rownum= 1 ;


Простой, пока нужно найти только одну запись.

Дата ДО редко бывает известна заранее, и даже если известна, то не факт что она со временем не измениться. Дата С как правило отражает свершившийся факт и меняется только по причине исправления ошибок.
...
Рейтинг: 0 / 0
Восстановление логически удаленных записей
    #35192039
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 mcureenab
> некоторое время тото там делаем, при этом в силу изоляции транзакций наш insert никто не видит.
У нас 2 операции: 1 – UPDATE какого-то поля какой-то записи какой-то таблицы, 2 – INSERT старого значения этого поля этой записи этой таблицы в таблицу истории. То, что не виден INSERT в историческую таблицу – не так уж важно. Хуже другое – что не видно UPDATE. И даже не только из-за изоляции транзакций, а потому что данные в формах обновляются не мгновенно (или эту проблему надо решать отдельно).

2 _mod
>> Для дата ДО запрос простой:
> Простой, пока нужно найти только одну запись (mcureenab).
Точно. Думаете, я зря написал "вывернутый запрос" в своем посте от 8.03.?

Пока в голову приходит только процедурный вариант. Ищем в исторической таблице запись where ТАБЛИЦА = наша_таблица, ПОЛЕ = наше_поле, ЗАПИСЬ = наша_запись, ДАТА_СОЗДАНИЯ_ЗАПИСИ = max. Если таких записей еще нет, то 2 варианта: 1. если мы заполняем пустое поле, то значением С_КАКОЙ_ДАТЫ становится текущий момент времени (если, конечно, никого особо не интересуют значения Null); 2. если одно значение поля меняем на другое, то значением С_КАКОЙ_ДАТЫ становится значение даты создания объекта (т.е. записи в нашей_таблице). Если же запись есть, то значением С_КАКОЙ_ДАТЫ становится значение даты, когда была создана найденная запись.
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Восстановление логически удаленных записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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