У меня есть два типа пользователей для моей системы: обычные пользователи с именем пользователя / паролем и делегированные авторизованные учетные записи через OAuth (то есть с использованием идентификатора токена). Информация, которая хранится для каждого, довольно различна, и управляется различными подсистемами. Однако они взаимодействуют с одними и теми же таблицами / данными в системе, поэтому мне нужно вести контрольный журнал независимо от того, изменили ли данные пользователь или пользователь на основе токенов.
Мое решение на данный момент состоит в том, чтобы иметь таблицу с именем что-то вроде AuditableIdentity , а затем два типа наследуют эту таблицу (либо в одной таблице, либо в виде двух отдельных таблиц с 1 по 1 PK с AuditableIdentity. Все операции будут использовать общий AuditableIdentity PK для столбцов CreatedBy, ModifiedBy и т. Д.
Нет никаких ограничений FK для столбцов аудита, так что любой текст может быть там, но я хочу простой способ легко определить, был ли это человек или система, которая внесла изменение, и присоединиться к одному AuditableIdentity стол кажется чистым способом сделать это?
Есть ли лучшая практика для этого сценария? Является ли это подходящим способом решения проблемы - или вы не будете возиться с общей таблицей и будете просто полагаться на объединения (к двум отдельным несвязанным таблицам пользователей / токенов), чтобы определить, какой тип пользователя соответствует каким записям аудита?