RE: одна таблица журнала вместо теневых таблиц.
Это было бы намного больше работы, хотя, и вы не получили бы столько пользы от этого.- Габриэль МакАдамс
Я не мог не согласиться больше.
Ваша цель:
, чтобы отслеживать, когда пользователь выполняет вставку,Обновите или удалите.
Если у вас есть теневая таблица для каждой таблицы, как вы отвечаете на эти вопросы:
- Кто из пользователей внес изменения вчера?
- В какой таблице больше всего обновлений?
- Какую деятельность сотрудник = "Page, S" делал в прошлом месяце?
- Какой сотрудник наиболее активен?
Вам придется пройти через каждую отдельную теневую таблицу, чтобы понять это.И если вы когда-нибудь начнете регистрировать новую таблицу, вы должны будете помнить, что эти спроки также должны попадать в эту новую теневую таблицу.
Если у вас есть одна таблица журнала, как предлагали другие, вы можете ответить на все вопросы.эти вопросы очень легко с простым SQL ... что немного труднее сделать, UN-DELETE или UN-UPDATE.Но вы создаете его не для этого, вы создаете его для отслеживания правок пользователей, и запросы, которые я перечислил, или подобные им, будут вашими проблемами.
Относительно логических удалений.
Они могут быть полезны, если эта таблица является родителем других таблиц, из которых вы НЕ МОЖЕТЕ удалить.Понравился сотрудник и фонд заработной платы.Вы не можете удалить сотрудника с записями заработной платы, которые должны храниться по закону.Если именно поэтому вы логически удаляете, отлично.Но если вы логически удаляете, так что вы сохраняете PK в FK в журнальной таблице, то я думаю, что вы покупаете мир вреда за не очень большую пользу.
Если у вас есть ЛЮБОЙ код, попадающий в тенепосредственно для таблиц, теперь вам нужно изменить их ВСЕ, чтобы включить предикат DELETED = 'F'.Если вы начинаете с нуля, вы можете создать представление для КАЖДОЙ логически удаленной таблицы, которая содержит предикат DELETED = 'F' и никогда не предоставляет выбор для самой таблицы.