Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Различные способы реализации "истории изменений" в 1-й базе данных? / 25 сообщений из 42, страница 1 из 2
29.03.2006, 20:53
    #33633644
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
Сразу скажу что я не большой специалист в проектировании баз данных, по крайней мере я так понял, когда просмотрел какими понятиями люди оперируют на форуме. Вот такая вот задача:
Я начал работать в фирме, которая разрабатывает проекты для агенств по продаже недвижимости. Следовательно, структура базы данных уже существует и пока вопрос о замене и улучшении не стоит. Но, им надо сейчас добавить такие "фишки", как "история изменений", а в будущем "архивации" данных.
Данные в базе можно ртазделить на 3 категории:
(1). Медленно меняющиеся или вообще не меняющиеся (например адрес объекта).
(2). В среднем темпе меняющиеся (раз или 2 в месяц).
(3). Быстро меняющиеся (5-10 раз в неделю).

Я тут просмотрел форум и решил реализовать такую модель:
1. для (1) и (2) варианта я создам общую таблицу для всех основных таблиц, в которую буду вносить само изменение(старое и новое), имя таблицы и поля, ключ, дату начала и конца.
2. для (3) варианта я буду использовать стандартный подход. Т.е. имеется таблица X, строится дополнительная таблица X_H, но в неё войдут только поля этого варианта, а не все.

Так вот вопрос такой: Насколько реален такой подход, исходя из соображений performance? А также важна скорость реализации такой модели. Может для всех случаев использовать 2 вариант? Но надо учитывать, что на данный момент есть таблицы где > 80 полей и только 10% из них (3) варианта.
...
Рейтинг: 0 / 0
30.03.2006, 09:27
    #33634146
nnov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
Эту тему только вчера обсуждали, в ветке
Логическое удаление записей
...
Рейтинг: 0 / 0
30.03.2006, 09:30
    #33634154
мод
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
Сначала надо перейти от таблиц и полей БД к объектам и их атрибутам прикладной области. Вот тогда будет понятно что и как отслеживать.
Например: проводка вообще никогда не изменяется.
...
Рейтинг: 0 / 0
30.03.2006, 18:04
    #33636001
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
nnovЭту тему только вчера обсуждали, в ветке
Логическое удаление записей

Я читал эту тему вчера и даже поставил её в избранное, но там нет ничего о том что я спрашивал. У меня совсем другой вопрос был.
Или... я чего-то не понял о какой части обсуждения ты говоришь.
Сейчас приведу простой пример:
Допустим у меня есть таблица из 100 полей.
Допустим что названия полей такие - А1-А100.
А1-А90 меняются очень редко. А91-А100 относительно часто.
Есть 2 варианта:
1. 1 таблица, которая копирует структуру оригинальной + поля для журнала;
2. 2 таблица:
- копирует только поля А91-А100 + поля для журнала;
- общая для всех таблиц: поля для журнала + название таблицы + название поля + поле в котором будет хранится старое значение полей А1-А90.
Т.е. на логическом уровне у меня будет небольшие дополнительные затраты по написанию кода. Но меня больше интересует, насколько долго будет выборка, если я, к примеру попытаюсь написать SQL, который принесёт мне все изменения от 1 числа месяца до 1 числа следущего.
...
Рейтинг: 0 / 0
30.03.2006, 18:05
    #33636004
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
Поправка:
2. 2 таблицы:
...
Рейтинг: 0 / 0
30.03.2006, 18:06
    #33636005
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
модСначала надо перейти от таблиц и полей БД к объектам и их атрибутам прикладной области. Вот тогда будет понятно что и как отслеживать.
Например: проводка вообще никогда не изменяется.

Извини, но я не совсем понял вопроса
...
Рейтинг: 0 / 0
31.03.2006, 09:53
    #33636783
nnov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
GoldDragonСейчас приведу простой пример:
Допустим у меня есть таблица из 100 полей.

Ну во первых такая таблица наводит на мысль что данные не нормализованы

GoldDragonДопустим что названия полей такие - А1-А100.
А1-А90 меняются очень редко. А91-А100 относительно часто.
Есть 2 варианта:
1. 1 таблица, которая копирует структуру оригинальной + поля для журнала;
2. 2 таблица:
- копирует только поля А91-А100 + поля для журнала;
- общая для всех таблиц: поля для журнала + название таблицы + название поля + поле в котором будет хранится старое значение полей А1-А90.
Т.е. на логическом уровне у меня будет небольшие дополнительные затраты по написанию кода. Но меня больше интересует, насколько долго будет выборка, если я, к примеру попытаюсь написать SQL, который принесёт мне все изменения от 1 числа месяца до 1 числа следущего.

Напишу еще раз, пока время есть

итак если необходимо отслеживать факты изменений
то заводи таблицу логов и обвешивай таблицы в которых необходимо
отслеживать изменеия тригерами которые будут писать в таблицу логов кто
когда и что менял.
Если необходимо обеспечить версионность данных
то я применяю такой способ.

Таблица дополняется полями Date_Begin и Date_End (тип datetime)
в которых хранятся значения соответственно начала действия и конца действия объекта
При любом изменении атрибутов объекта
Создается копия записи об объекте с изменеными данными и новым интервалом действия.
Все изменения делаются процедурами.
(Я вообще для себя за правило взял, на прямую данные в таблице никто менять не может, все таблицы доступны только по чтению)
При таком подходе для получения данных на любой момент времени
включая текущий момент времени данные выбираются с условием
Date_Begin < now < Date_End
Это общий принцип.
Если тебе необходимо постоянно работать с историей изменения объекта
введи дополнительный уникальный код, который присваивается при создании объекта и неизменяется на протяжении всей жизни. Это облегчит получение выборок по истории изменения объекта.
...
Рейтинг: 0 / 0
31.03.2006, 10:18
    #33636847
мод
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
GoldDragon модСначала надо перейти от таблиц и полей БД к объектам и их атрибутам прикладной области. Вот тогда будет понятно что и как отслеживать.
Извини, но я не совсем понял вопроса
Это не вопрос а ответ.
Любой объект хранится размноженным с привязкой к дате, т.е дата-состояние объекта на эту дату. + к этому журнал самих изменений по каждому атрибуту в отдельности.
Т.о. всегда можно узнать состояние объекта на любую дату + аудит.
К таблицам БД это не имеет отношения вообще. Грубо говоря все объекты могут лежать в одной таблице.
...
Рейтинг: 0 / 0
31.03.2006, 10:21
    #33636854
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
GoldDragon
Итого. В принципе я не вижу особых причин отходить от того, что Вы назвали "стандартным вариантом" для всех полей. По сути Вы пытаетесь выполнить некую своеобразную нормализацию исторической таблицы; если довести этот подход до абсурда, получится основная таблица и табличка истории изменений для каждого поля в отдельности. Из общих соображений - я не думаю, что "хранение повторяющихся данных" скажется на производительности сильнее, нежели необходимость строить достаточно сложные связи между таблицами.

Относительно первого пункта Вашей модели - можете забыть о таких вещах как скорость и удобство работы с такими данными. Для того, чтобы эта структура была удачной, нужны весьма своеобразные задачи.

Итого. Скорее всего я бы сначала оценил "стандартный вариант" - точнее, один из стандартных, с зависимой таблицей версий. Если окажется, что он таки неудачен по скорости выборки, например необходимо копировать большие тексты, я бы посмотрел на следующий вариант:

[Таблица текущих данных] <------< [Таблица версий редко изменяемых данных] <------< [Таблица версий часто изменяемых данных]

В такой структуре не будет ни большого дублирования, ни сложных связей. Надо будет только помнить одну вещь: при изменении данных, приводящему к появлению новой версии в первой таблице, надо будет также вставить новую запись (может быть, дублирующую старую во всех полях) во вторую таблицу, иначе потеряется сквозная временная ось.
...
Рейтинг: 0 / 0
31.03.2006, 18:23
    #33638467
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
softwarer
Итого. В принципе я не вижу особых причин отходить от того, что Вы назвали "стандартным вариантом" для всех полей. По сути Вы пытаетесь выполнить некую своеобразную нормализацию исторической таблицы; если довести этот подход до абсурда, получится основная таблица и табличка истории изменений для каждого поля в отдельности. Из общих соображений - я не думаю, что "хранение повторяющихся данных" скажется на производительности сильнее, нежели необходимость строить достаточно сложные связи между таблицами.
Я не совсем согласен с этим. Если бы все так думали, то мы до сих пор бы имели одни телеги. Зачем что-то улучшать если и так работает ;). Ноо.. я понял что ты хотел этим сказать.

softwarer
Относительно первого пункта Вашей модели - можете забыть о таких вещах как скорость и удобство работы с такими данными. Для того, чтобы эта структура была удачной, нужны весьма своеобразные задачи.
Это понятно - поэтому и пытаюсь найти другой

softwarer
Итого. Скорее всего я бы сначала оценил "стандартный вариант" - точнее, один из стандартных, с зависимой таблицей версий. Если окажется, что он таки неудачен по скорости выборки, например необходимо копировать большие тексты, я бы посмотрел на следующий вариант:
[Таблица текущих данных] <------< [Таблица версий редко изменяемых данных] <------< [Таблица версий часто изменяемых данных]
Т.е. другими словами (только чтобы убедится что я тебя понял).
Построить 2 таблицы для А->АА(10 полей + поля для журнала) и ААА(90 полей + поля для журнала):
АА - копирует только поля А91-А100;
ААА - копирует только поля А1-А90.
...
Рейтинг: 0 / 0
31.03.2006, 18:25
    #33638469
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
nnov
Это общий принцип.


Вот потому что это общий принцип я и писал "поля журнала", имея ввиду то, что написал.
...
Рейтинг: 0 / 0
31.03.2006, 18:29
    #33638475
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
nnov
Ну во первых такая таблица наводит на мысль что данные не нормализованы


Сам знаю что не нормализованны, но пока ничего не могу с этим поделать. Рано или поздно будет менять всю аппликицю, вот тогда и будем говорить о нормализации, а пока это то что есть :(
...
Рейтинг: 0 / 0
31.03.2006, 21:22
    #33638696
denied#land.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
GoldDragonЯ начал работать в фирме, которая разрабатывает проекты для агенств по продаже недвижимости. Следовательно, структура базы данных уже существует.


кто? И***М? B*******D?

коротенько - можно в почту...

все может оказаться гораздо проще...
...
Рейтинг: 0 / 0
31.03.2006, 21:25
    #33638699
awerwerwqerwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
GoldDragon(3). Быстро меняющиеся (5-10 раз в неделю)


все, сам виноват - почел по диагонали

на ранее заданный вопрос можно не отвечать.

мимо кассы, очевидно - это не те... и не то :)
...
Рейтинг: 0 / 0
01.04.2006, 00:51
    #33638829
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
GoldDragon
Данные в базе можно ртазделить на 3 категории:
(1). Медленно меняющиеся или вообще не меняющиеся (например адрес объекта).
(2). В среднем темпе меняющиеся (раз или 2 в месяц).
(3). Быстро меняющиеся (5-10 раз в неделю).

Бросайте все это. Данные можно разделить только на 2 категории: "грязные данные", "чистые данные". Между ними стоит а-ля брендмауэр, который решает пускать-непускать. Во многих системах это называется Учетом или Posting. Вся отчетность и принятие решений только на чистых данных. Лучше потратить время на решение проблем планирования, прогноза, расчеты, usability системы и ,в конце концов, логику этого брендмауэра ,чем вычислять периодичность изменения данных.
...
Рейтинг: 0 / 0
01.04.2006, 02:19
    #33638850
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
iscrafm
Бросайте все это. Данные можно разделить только на 2 категории: "грязные данные", "чистые данные". Между ними стоит а-ля брендмауэр, который решает пускать-непускать. Во многих системах это называется Учетом или Posting. Вся отчетность и принятие решений только на чистых данных. Лучше потратить время на решение проблем планирования, прогноза, расчеты, usability системы и ,в конце концов, логику этого брендмауэра ,чем вычислять периодичность изменения данных.
С удовольствием брошу. Как только пойму что ты имел ввиду и какая свызь между тем, что я написал и тем что ты сказал.
...
Рейтинг: 0 / 0
01.04.2006, 02:46
    #33638858
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
я хотел сказать, что заданные тобой вопросы возникают когда данные свалены в одну кучу. Поэтому когда человек видит в отчете совсем не ту цифру, которую он видел вчера - задает вопрос. Избавься от этой проблемы и не будет подобных вопросов.
...
Рейтинг: 0 / 0
01.04.2006, 09:25
    #33638923
YBW
YBW
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
iscrafmя хотел сказать, что заданные тобой вопросы возникают когда данные свалены в одну кучу. Поэтому когда человек видит в отчете совсем не ту цифру, которую он видел вчера - задает вопрос. Избавься от этой проблемы и не будет подобных вопросов.

так просто???

а что можно сделать, чтобы избавиться от подобных ответов?
...
Рейтинг: 0 / 0
01.04.2006, 13:20
    #33639026
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
YBW iscrafmя хотел сказать, что заданные тобой вопросы возникают когда данные свалены в одну кучу. Поэтому когда человек видит в отчете совсем не ту цифру, которую он видел вчера - задает вопрос. Избавься от этой проблемы и не будет подобных вопросов.

так просто???

а что можно сделать, чтобы избавиться от подобных ответов?

YBW, всегда, когда возникают подобные вопросы (постоянная фиксация и хранение изменений) нужно узнавать причину их возникновения. Логирование при любой правке не самое эффективное решение. Поэтому в большинстве случаев помогает устранение самого вопроса.
А если уж влез, то и на твой вопрос ответ - пойти смотреть сериалы.
...
Рейтинг: 0 / 0
05.04.2006, 20:10
    #33647469
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
iscrafm,
Спасибо тебе за ответы, но я действительно не догоняю, что ты имеешь ввиду. Что именно убрать? Какую проблему?
Сидит себе секретарша на телефоне, одним ухом слушает клиента, одним глазаом на телефон, другим на клавиатуру и печатает, то что клиент говорит. После этого - эта же секретарша или другая, связывается с агентом, который должен что-то сделать, неважно что и всё что говорилось между ними тоже заносится в базу данных. Короче, много чего заносится в базу данных и часто это происходит в быстром темпе. И как бы это секретарша не была бы квалифицирована, могут быть ошибки, которые будут исправляться. Изменения в цене на дом тоже могут быть. Многое чего может быть.

А ты говоришь, что журнал изменений не нужен, если я правильно тебя понял. А что вместо?
...
Рейтинг: 0 / 0
05.04.2006, 22:44
    #33647649
denied#land.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
GoldDragonМногое чего может быть.

а все ли из того, что "может быть" нужно хранить в истории изменений?

существующая практика такова:

1 секретарь на телефоне не "печатает то, что клиент говорит", а регистрирует обращение клиента, как правило на основе анкеты, анкеты контекстны - по мере получения ответов формируется список последующих вопросов

2 по получении обращения производится первичная обработка обращения, это делает либо агент либо менеджер отдела, в зависимости от статуса клиента (обращения)

3 после предварительной обработки обращеия формируется заявка клиента, в случае необходимости уточняются дополнительные сведения

4 после оформления заявки клиента она размещается в системе учета - и только после этого может возникнуть необходимость сохранять историю изменений

- много ли их будет?
...
Рейтинг: 0 / 0
06.04.2006, 20:13
    #33650422
GoldDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
denied#land.ru
1 секретарь на телефоне не "печатает то, что клиент говорит", а регистрирует обращение клиента, как правило на основе анкеты, анкеты контекстны - по мере получения ответов формируется список последующих вопросов
2 по получении обращения производится первичная обработка обращения, это делает либо агент либо менеджер отдела, в зависимости от статуса клиента (обращения)
3 после предварительной обработки обращеия формируется заявка клиента, в случае необходимости уточняются дополнительные сведения
4 после оформления заявки клиента она размещается в системе учета - и только после этого может возникнуть необходимость сохранять историю изменений

согласен

denied#land.ru
- много ли их будет?

по пункту 1-3 немного - ты прав. А вот по пункту 4 достаточно много. Мы же здесь не говорим о системе учёта товаров, мы говорим о человеческом факторе.
Мы говорим здесь об агентах, которые бегают с высунутом языком, чтобы найти продавца дома и стать его агентом.
Мы говорим об агентах, который нашёл покупателя на этот дом и хочет продать этот дом с наибольшой выгодой для себя. И не обязательно эти 2 агента работают в 1-й фирме.
Мы говорим о клиентах у которых могут быть 7 пятниц на неделе, то он может прийти или показать дом в этот день, то не может. То он здоров, то вдруг заболел, то он согласен на 1 цену, то на другую (из-за какой-то небольшой неполадки в доме) и т.д. и т.п.
Поверь мне - этих изменений может быть много. Но, как я уже отмечал, таких полей 10%, а вот другие изменяются очень редко. Поэтому и возник у меня такой вопрос сделать 2 системы учёта: 1 для редкоизменяемых, а других - частоизменяемые.
...
Рейтинг: 0 / 0
07.04.2006, 09:45
    #33650931
Estets
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
GoldDragon
Поверь мне - этих изменений может быть много. Но, как я уже отмечал, таких полей 10%, а вот другие изменяются очень редко. Поэтому и возник у меня такой вопрос сделать 2 системы учёта: 1 для редкоизменяемых, а других - частоизменяемые.
На мой взгляд, экономия нескольких мегабайт в БД не стоит усилий на синхронизацию и анализ исторических данных из 2-х таблиц.

Есть еще один подход, вместо/вместе с полной копией записи с указанием что изменил тот-то тогда-то, пробегаться по всем/необходимым полям сравнивать старые и новы значения и писать лог вида:

Код: plaintext
1.
2.
3.
4.
5.
дата =  19 . 03 . 06   13 : 00 , 
кто = "Иванов И.И."
документ = "Договор 123",
поле = "Стоимость объекта", 
старое значение = "150 000"
Новое значение = "160 000"

Используя группировки и сортировки, можно построить отчет, который с первого взгляда позволит понять, кто, что, на что и когда менял.

Реализация всего этого достаточно нудная, но может вам и подойдет, чем показывать список исторических копий документов из которых непонятно чего изменилось.
...
Рейтинг: 0 / 0
07.04.2006, 10:34
    #33651108
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
Еще для коллекции:
1) Лог (Estets , слегка изменены данные для сравнимости)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
дата =  19 . 03 . 06   13 : 00 , 
кто = "Иванов И.И."
документ = "Договор 123",
поле = "Стоимость объекта", 
старое значение = NULL   --ВЫЧИЧЛЯЕМОЕ
Новое значение = "160 000"

дата =  20 . 03 . 06   13 : 00 , 
кто = "Иванов И.И."
документ = "Договор 123",
поле = "Стоимость объекта", 
старое значение = "160 000"
Новое значение = "165 000"

2)Интервальная история
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
датаНач =  19 . 03 . 06   13 : 00 , 
датаОконч =  20 . 03 . 06   13 : 00 ,  --ВЫЧИЧЛЯЕМОЕ
кто = "Иванов И.И."
документ = "Договор 123",
поле = "Стоимость объекта", 
Значение = "160 000"

датаНач =  20 . 03 . 06   13 : 01 , 
датаОконч = NULL, 
кто = "Иванов И.И."
документ = "Договор 123",
поле = "Стоимость объекта", 
Значение = "165 000"
3) Лог + цепь явно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ИД =  1 
ПредшествИД = NULL  --ВЫЧИЧЛЯЕМОЕ
дата =  19 . 03 . 06   13 : 00 , 
кто = "Иванов И.И."
документ = "Договор 123",
поле = "Стоимость объекта", 
Значение = "160 000"

ИД =  2 
ПредшествИД =  1 
дата =  20 . 03 . 06   13 : 01 , 
кто = "Иванов И.И."
документ = "Договор 123",
поле = "Стоимость объекта", 
Значение = "165 000"
4) Максимально декомпозированный вариант, без вычисляемых полей.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
TrackID =  789 
документ = "Договор 123",
поле = "Стоимость объекта"

TrackID =  789 
дата =  19 . 03 . 06   13 : 00 , 
кто = "Иванов И.И."
Значение = "160 000"

TrackID =  789 
дата =  20 . 03 . 06   13 : 01 , 
кто = "Иванов И.И."
Значение = "165 000"

Все представления логически эквивалентны.
Выбор конечно зависит от набора запросов. Например таблица 4 плюс материализованное представление 2.
...
Рейтинг: 0 / 0
07.04.2006, 11:08
    #33651258
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные способы реализации "истории изменений" в 1-й базе данных?
GoldDragoniscrafm,
Спасибо тебе за ответы, но я действительно не догоняю, что ты имеешь ввиду. Что именно убрать? Какую проблему?
Сидит себе секретарша на телефоне, одним ухом слушает клиента, одним глазаом на телефон, другим на клавиатуру и печатает, то что клиент говорит. После этого - эта же секретарша или другая, связывается с агентом, который должен что-то сделать, неважно что и всё что говорилось между ними тоже заносится в базу данных. Короче, много чего заносится в базу данных и часто это происходит в быстром темпе. И как бы это секретарша не была бы квалифицирована, могут быть ошибки, которые будут исправляться. Изменения в цене на дом тоже могут быть. Многое чего может быть.

А ты говоришь, что журнал изменений не нужен, если я правильно тебя понял. А что вместо?
я тебе предлагаю решить эту задачу через интерфейсную таблицу и процедуру постинга.
У тебя есть каталог недвижимости и есть интерфейсная таблица операций с этим каталогом. Между ними находится процедура, которая в зависимости от операции и разных дополнительных условий изменяет каталог. При этом записи в интерфейсной таблице и являются историей (журналом изменений). Введенные данные могут быть приняты и ,соответственно, на их основании выполняется модификация текущего состояния картотеки или отменены, если запись картотеки по каким-то причинам нельзя уже модифицировать. Интерфейсная таблица имеет туже структуру, что и рабочая картотека. Связываются по ID. Если в интерфейсной таблице ID пустое, то это новая запись. Также есть дата актуальности. Это достаточно простое в реализации решение, то оно избавит тебя от многих непредвиденных ситуаций, которые могут возникнуть, если ты будешь выстраивать схему от рабочей картотеки и где-то в тригерах анализировать зачем изменили значение того или иного поля и можно ли было это делать. А если можно и тригер ошибся или логикой пока не предусмотрена возникшая ситуация, а пользователь ввел кучу данных, которые в момент отката бесследно пропали? А так ты получаешь простой интерфейс и простой способ мониторинга изменений состояния картотеки недвижимости. Понятно, что история объекта - это набор записей в интерфейсной таблице связанный с карточкой объекта недвижимости по ID. Отчетность тоже простая. Для большего usabilyty можно поработать над мастером ввода данных, чтобы он предоставлял пользователю только те поля ввода, которые нужны для отражения в системе требуемых изменений.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Различные способы реализации "истории изменений" в 1-й базе данных? / 25 сообщений из 42, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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