Эй, так что немного дизайнерского вопрос здесь:внешних ключей в таблице журнала
Я работаю над проектом, который требует от меня, чтобы отслеживать, когда пользователь выполняет операцию Insert, Update или Delete. Вещь, которую я пытаюсь решить, заключается в том, следует ли ссылаться на таблицу журналов Первичного ключа затрагиваемой строки или какого-либо другого идентификатора. Чтобы зарегистрировать удаление при использовании внешних ключей, мне понадобится столбец Deleted для каждой таблицы. Однако, если бы я использовал какой-либо именованный идентификатор без внешнего ключа, я, в конечном итоге, столкнулся с дублированием имен в таблице журналов, и будет неясно, к чему относится запись. Есть ли у кого-нибудь практический опыт в этом отношении, особенно влияние производительности на использование столбца «Удалено», чтобы поддерживать полный журнал?
Связанный с этим вопрос также находится в дизайне самой таблицы журналов. Если я перейду с ссылками на внешние ключи в одной таблице журналов, моим первым инстинктом будет создание ссылочного столбца для каждой таблицы, которая отслеживается для изменений. Это не кажется мне идеальным, как будто мне нужно добавить новую таблицу по строке, которую я должен изменить, и изменить таблицу журналов и любые связанные с ней sprocs. Один из вариантов, который я вижу, состоит в том, чтобы иметь два столбца: TableName и RowId. Но это не будет иметь встроенных ссылок на внешние ключи, так как неизвестно, на что ссылается таблица.
Спасибо за любой ввод!
Удаленный флаг/столбец называется логическим удалением. Делает разговор проще. –