Sto creando tabelle di controllo per tenere traccia delle modifiche apportate ad alcune delle mie tabelle cruciali e mi chiedo se ci sia un punto in cui le righe della cronologia hanno il loro id. Ecco come appaiono le mie interfacce:
public interface ITrackedDbEntity : IDbEntity
{
Guid GUID { get; } //pk, unique
int Id { get; set; } //unique, not pk
string CreatedBy { get; set; }
DateTime CreatedAt { get; set; }
string LastModifiedBy { get; set; }
DateTime LastModifiedAt { get; set; }
}
public interface IHistoryDbEntity : ITrackedDbEntity
{
string ActionType { get; set; }
}
GUID
è l'identificatore univoco e immutabile attuale e viene utilizzato internamente nel mio sistema, mentre Id
è una sorta di identificatore aggiuntivo che posso modificare se necessario e condividere in sicurezza all'esterno (ho anche un relazione di chiave estera dalla tabella di controllo ad essa). Ora, come per la chiave primaria della tabella di controllo, ho pensato che una chiave composta di Id
e LastModifiedAt
sarebbe sufficiente. Ciò mi consentirebbe persino di creare una relazione di chiave esterna tra guida tabella principale e guida tabella di controllo per una più semplice esecuzione di query.
Ma cosa mi sto chiedendo e qual è la mia domanda: c'è qualche motivo valido per creare un AuditId unico per le tabelle di controllo?