|
|
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
Многоуважаемые разработчики баз данных! У меня к Вам следующий вопрос. Каким образом рациональнее (правильнее) реализовывать следующее: 1. есть таблица допустим с полями Наименование официальное (НО) и Наименование собственное (НС) 2. НО является периодическим атрибутом, т.е. с момента внесения записи до какого-то момента оно имело одно значение, с какого-то момента времени - другое и т.д. Т.е. в отчет в одном временном промежутке попадет одно наименование, в другом - другое 3. надо чтобы было известно кто и когда менял значения НО и НС (не последние изменения делал, а чтобы можно было всю историю изменений значений полей просмотреть) 4. кто и когда помечал запись на удаление или снимал эту пометку. Как это все реализовать? Каким запросом получить действующие в указанном диапазоне дат значение полей и что выдавать, если в этом диапазоне запись имела два значения, т.е. была изменена в указанном диапазоне. Заранее огромное спасибо за цельные советы и обсуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 15:18:48 |
|
||
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 15:32:55 |
|
||
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
А если необходимо получить значение на период 01.01.02-01.03.02 что получится? А если user сменит дату начала действия значения в NO3, то надо искать запись предыдущую и менять там dateDelete? А как реагировать на ситуацию не появления нового значения NO, а просто допустим изменения ошибки при первоначальном внесении значения этого поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 15:55:51 |
|
||
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
Cdate DateTime HostName char(32) UserName char(32) OldValue char(..) NewValue char(..) И вставлять в нее данные из тригера на обновление-удаление. А Вы вообще-то про MS SQL справшиваете? Там вроде пометок на удаление нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2002, 19:06:21 |
|
||
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
>>>А если необходимо получить значение на период 01.01.02-01.03.02 что получится? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. >>>А если user сменит дату начала действия значения в NO3, то надо искать запись предыдущую и менять там dateDelete? ну чтож теперь , надо следить ! >>>А как реагировать на ситуацию не появления нового значения NO, а просто допустим изменения ошибки при первоначальном внесении значения этого поля? транзакцией ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 13:11:08 |
|
||
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
Cat2! Для пометки удаления будет выделено соотвествующее поле - весь вопрос в том, как отследить кто помечал на удаление, кто восстанавливал. Очень хотелось бы что-бы еще кто-нибудь поделился тем как он все подобное реализует. Например у нас предлагают записи с периодическими атрибутами хранить в той же таблице, а не в связанной. Что будет оптимальнее, что будет правильнее? Т.е. IDObj IDRec NO DateModify 1 1 Что-то 01.01.02 1 2 Что-то новое 01.02.02 1 3 Что-то еще новее 01.03.02 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 15:23:01 |
|
||
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
Так тоже неплохо , в этом случае в таблице надо сделать поле UserCreate и писать туда SUSER_SNAME() и все ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 15:27:35 |
|
||
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
Только вот не совсем понятно, как выяснять кто пометил запись на удаление и кто ее восстановил? Получается, что при пометке на удаление и восстановлении придется создавать две записи - первая хранит то, что как бы удалили и информацию об удаляющем, а следующаяя будет содержать все смысловые поля скорее всего неизмененные (даже точно не измененные - не давать же право редактировать помеченную на удаление запись) и информацию о восстанавителе записи. Получается, что безопасность требует жертв и приличных. Может у кого есть более элегантный способ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 16:31:39 |
|
||
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
Давай проще делать , добавим еще одну таблцу и начинаем писать туда журнал событий ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 16:40:42 |
|
||
|
Помогите решить раз и навсегда
|
|||
|---|---|---|---|
|
#18+
Да, скорее всего кто изменял значение периодического атрибута лучше хранить в той же таблице (то есть в принципе хранить автора записи - создал запись - информ. о тебе сохранилась, изменил значение периодического атрибута следовательно создалась новая запись и в ней снова информация о создателе), а кто изменял ошибочное значение периодического или обычного атрибута, помечал на удаление или восстанвливал запись, проводил документ, перепроводил, отменял проведение - лучше сохранять в отдельных таблицах для "разбора полетов". Кажется это будет оптимальным, осталось только придумать как он должен выглядеть и каким образом с ним будет удобнее всего работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 17:26:32 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32035622&tid=1821935]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
36ms |
get tp. blocked users: |
3ms |
| others: | 223ms |
| total: | 366ms |

| 0 / 0 |
