У меня есть таблица проверок и таблица заказов на покупку с отношением «один ко многим». (Каждая проверка имеет n заказов на поставку, каждый заказ на поставку имеет 1 или ноль чеков) Пользователи обычно добавляют чек в заказ на поставку, а затем изменяют данные проверки. Иногда они позже удаляют чек из ПО и добавляют другое.SQL: Аудит изменений объекта с несколькими таблицами
Я хочу отслеживать все изменения в чеке и заказах на поставку и отображать контрольный журнал по требованию. Типичный контрольный журнал выглядит следующим образом:
- PO Детали изменены (имя_пользователя) на (дата). Изменено поле1 от x до y, field2 ... и т. Д.
- PO Детали изменены (имя_пользователя) на (дата). Измененный field1 от х к у, field2 ... и т.д.
- Добавлена проверка хххх на ПО (имя пользователя, дата и т.д.)
- Измененные детали проверка XXXX и т.д. и т.п.
- Убрана проверка хххх
- Добавлена проверка гггг к ПО
- Изменена проверка гггг подробнее ...
Я пытаюсь выяснить, как отслеживать изменения в таблицы в нормализованном образе. Когда пользователь изменяет данные чека, контрольный журнал на все PO с этой проверкой покажет изменение. Но контрольный журнал должен показывать только изменения, произошедшие с , а чек был прикреплен к интересующему вас вопросу.
Рассмотрите подход, в котором у меня есть таблицы ChequeAudit и POAudit, и сохраняйте строку в этих таблицах каждый раз, когда что-то в базовой таблице изменяется. Теперь, чтобы предоставить пользователю список изменений в Заказе на поставку, я могу вернуть все строки, касающиеся самого ПО, и, кроме того, все строки, касающиеся любых проверок, которые когда-либо были на PO. Но тогда мне нужно было бы исключить строки, касающиеся изменений в чеке, которые были сделаны до того, как проверка была добавлена в PO, или после того, как чек был удален из ПО. И прямое соединение в интервале дат не будет работать, так как проверка может быть подключена и удалена снова, сколько угодно раз.
Я не разработал способ хранения одной записи в журнале изменений чека и легко связать ее с заказом (-ами) покупки. В частности, какая структура базы данных мне нужна для того, чтобы запросить PO, и вернуть все изменения, внесенные в какие-либо проверки, произошедшие , а чек был прикреплен к ПО? Может ли это быть нормализовано, или я вынужден регистрировать одно изменение на чеке в отношении каждого отдельного связанного ПО?
Какова структура данных Trent? :) – Naval