Вы в значительной степени имеете , поскольку, хотя EmployeeID в Employee будет уникальным (обновление не добавит новую строку, просто измените существующую строку), таблица аудита будет иметь несколько строк с тот же EmployeeId (один для начальной вставки, один для каждого последующего обновления этого сотрудника).
Кроме того, субъекты Employee являются сотрудниками. Но субъекты аудита являются записями аудита. У них должен быть свой собственный идентификатор.
Вы захотите этого, если когда-нибудь что-то пойдет не так и вам нужно будет обновить или удалить запись аудита. Действительно, если сотрудник вставлен, то значение одного столбца обновляется, а затем снова обновляется, чтобы стать исходным значением, теперь у вас есть две идентичные записи в аудите. Который должен был бы быть удален или обновлен вместе (если вы не использовали предельное условие в своем обновлении или удаляете.) Грязный.
Что также указывает на полезность добавления метки времени в таблицу аудита. Но не думайте, что вы должны использовать это и employeeid в качестве составного ключа. Во-первых, составные ключи отстой. Во-вторых, вполне возможно, что степень детализации временной метки меньше, чем время, которое потребуется вашей системе для выполнения двух обновлений (два обновления одного и того же сотрудника, как, скажем, в пакетной операции). (У даты-времени Sybase степень детализации составляет три миллисекунды; Intel Core 2 Extreme может выполнить за это время почти 200 миллионов инструкций.)