|
|
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
Есть интересный вопросик, который меня давно мучает ... Как можно сохранить историю изменения определенного поля .... ну наверно неправильно я сказал , скажем так : есть человек (записанный в базе), так вот ФИО его Иванов Иван Иваныч, прошло время и звать его стали Иванов Иван Петрович ... вроде все просто ... если строить отчет с его присутствием, то тогда получается, что в определенный момент времени он имеет одно отчество , но если строить тот же отчет , но за период времени (вовремя которого он изменил отчество), то тогда их будет два ! как из такой ситуации можно выйти ? Кто что может посоветовать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2002, 16:35:02 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
Я просто веду таблицу - журнал,для тех данных изменение которых может повлеч за собой какието последствия (типа изменнения в расчетах),во избежание дублей по смыслу и т.д. и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2002, 16:55:40 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
Ну замечательно , теперь строим отчет, о том, как этот чувак получал зарплату ... отчество то какое писать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2002, 17:09:04 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
на дату отчета.... у меня примерно так... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. актуальный ... Код: plaintext 1. 2. и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2002, 17:49:48 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
Простой вариант истории. Практически как у MiCe, только DateEnd у последнего состояния равна не NULL, а некой DateMax. ИМХО так проще добывать состояние на заданную дату. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 05:12:06 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
Есть интересный вопросик, который меня давно мучает ... А нас-то как мучит! На нашем производстве (энергетика) во многих системах требуется хранить ответственного за изменение данных - даже когда человек уволен, меняет фамилию и т.д. Дебатируем пока с системными администраторами... Хочется применить системный подход для всех приложений (пример MiCe все же годится как частный случай в пределах одного приложения). Я (разработчик) предлагаю хранить в записи идентификатор доменной учетной записи, в связи с чем при увольнении сотрудника его учетная запись не удаляется из домена, а делается Disabled, при изменении ФИО создается новая учетная запись, предыдущая не удаляется и делается Disabled. При таком решении БД истории пользователей становится БД активного каталога. Технократичное решение, короче, но - возможно в будущем. Пока же я пошел на денормализацию данных и в структурах данных, требующих ретроспективы, в записи храню не идентификатор пользователя, а его символьное ФИО; содержимое этого поля поддерживается тригером вставки/изменения. При объемах ~500 тыс. записей - терпимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 08:21:16 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
2 Sergey Vinogradov в моем случае если enddate не нулл - то человек уже уволен.....;)) т.е. в обратном случае (null) запись на текущий момент актуальна и используется.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 08:46:29 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
Народ - а не проще людей в отдельную таблицу физ лиц вынести, со всеми их паспортными и другими данными, на которые и делать ссылки в документах, заключаемых договорах и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 09:45:34 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
так это и есть отдельная таблица.... суть вопроса история изменения . те нужны данные на определенный момент времени..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:21:11 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
To: MiCe То же работает и с помощью DateMax (например DateMax = '30000101'). Просто без NULL запросы на определенную дату становятся более простыми . Да и более логично как бы это выглядит (мне так кажется), что для каждого состояния объекта установлен четкий период его действия - как в прошлом, так и в будущем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:22:05 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
все умерают через неделю!.... ;)) немного повторюсь... актуальный ... Код: plaintext 1. 2. 3. что может быть проще? а так как данные в основном добавляются в текущем периоде .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:32:35 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
Да я не про актуальное состояние говорил. Тоже повторюсь: Просто без NULL запросы на определенную дату становятся более простыми. Например: Код: plaintext 1. 2. 3. С NULL в конечной дате это будет выглядеть несколько хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 12:18:17 |
|
||
|
сохранение истории ...
|
|||
|---|---|---|---|
|
#18+
На правах идеи. Если несколько развить методику Dominic-а, то мне приходят лично вот такие мысли Представим историю изменения атрибутов клиента не ввиде просто таблицы, а виде 2-х уровневого дерева Объект первого уровня это клиент как сущность. Все его потомки есть информация о конкретных значения атрибутов клиента на какой-то момент времени(период). Тогда каких-либо документах нам нужны 2 поля - для ссылки на клиента как на сущность (для получения каких-либо сводных отчетов) - для ссылки на конкретное состояние атрибутов клиента Тогда за счет избыточности данных можно не использовать поиск по таблицы с историей изменени атрибутов. Теоритически можно обойтись и одним полем - ссылкой на конкретную запись из таблицы истории - но тогда для выборок по клиенту придется работать с таблицей истории как с деревом, хотя конечно и с 2-х уровневым. Повторюсь, что мои размышления - теоритические. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 12:50:18 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32047693&tid=1820638]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 283ms |

| 0 / 0 |
