Che cos'è una tabella di controllo?


24

Cosa sono le tabelle di controllo?

Come sono utili?

Mi sono imbattuto in loro leggendo questo articolo .


2
Sono solo tavoli regolari. È il modo in cui li usi e ciò che li metti che li rendono "tabelle di controllo".
Nick Chammas,

1
Non sono gli stessi. Si dispone di una tabella di controllo, che è separata dalla tabella che si sta controllando. Quindi avresti due tavoli NormalTablee AuditNormalTable.
Thomas Stringer,

1
Matt, Shark ha la tua risposta su questo. @Shark, stavo sottolineando che una tabella di audit non è un costrutto di database speciale (dato che ho avuto l'impressione che l'OP potesse credere). È solo un'altra tabella che lo sviluppatore crea e utilizza per tenere traccia di determinate informazioni.
Nick Chammas,

@NickChammas Oh, assolutamente, ho capito perfettamente cosa volevi dire. Ma dal commento dell'OP non pensavo che lo facesse.
Thomas Stringer,

Se consideri il significato del dizionario di audit, probabilmente arriverai alla conclusione che "tabella di controllo" è un termine improprio. Un audit dovrebbe essere esterno al database: se è codificato dal business dell'applicazione stesso, come può essere un audit?
Onedayquando il

Risposte:


22

Le tabelle di controllo vengono utilizzate per tenere traccia delle transazioni rispetto a una o più tabelle particolari. Ti permettono di vedere un "registro" in corso (per mancanza di una parola migliore). Ad esempio, supponi di avere una tabella come questa:

create table SensitiveInformation
(
    SensitiveNumber int not null,
    SensitiveData varchar(100) not null
)
go

Potrebbero esserci utenti e / o applicazioni che hanno accesso per inserire, aggiornare ed eliminare da quella tabella. Ma a causa della natura sensibile di tali dati, potresti voler avere un modo semplice e veloce per tenere traccia di chi sta facendo cosa su quella tabella.

Quindi hai una tabella di controllo per tenere traccia di ciò che viene fatto su quella tabella. In genere questo includerà chi , cosa , quando di base .

Una tabella di controllo potrebbe essere simile al seguente:

create table SensitiveInformationAudit
(
    SensitiveNumberNew int null,
    SensitiveNumberOld int null,
    SensitiveDataNew varchar(100) null,
    SensitiveDataOld varchar(100) null,
    Action varchar(50) not null,
    AuditDate datetime not null,
    LastUpdatedUser varchar(100) not null
)
go

Le tabelle di controllo vengono in genere compilate mediante l'uso dei trigger di database. In altre parole, quando si Xverifica un'azione SensitiveInformation, inserirne i dettagli SensitiveInformationAudit.


Il Actioncampo è UPDATEo INSERTo DELETE?
leeand00,

24

Un altro aspetto importante delle tabelle di controllo che non è stato finora messo in evidenza è che, oltre a tenere traccia di chi ha fatto cosa, quali tabelle di controllo dei record (spesso anche prima e dopo le istantanee) vengono scritte una volta .

I record in una tabella di controllo non possono essere aggiornati o eliminati (vedere la nota), ma solo inseriti . A volte questo viene imposto usando i trigger o forse solo la logica dell'applicazione, ma è importante nella pratica perché ti dà la "prova" che nulla è stato manomesso in un modo che è difficile da rilevare.

Nota: la pulizia di vecchi record da una tabella di controllo richiede processi speciali che spesso devono essere approvati dalla direzione o dai revisori.


4

Le tabelle di controllo vengono generalmente utilizzate quando si desidera tenere traccia delle modifiche nelle tabelle sensibili / riservate. Se esiste una tabella utilizzata per la percentuale di pagamento e la percentuale di bonus e l'applicazione delle risorse umane remunera gli stipendi in base a questi dati, un utente con accesso in scrittura a questa tabella può apportare modifiche di pagamento non autorizzate.

Allo stesso tempo, alcuni utenti dovrebbero poter lavorare su queste tabelle. È qui che arrivano le tabelle di controllo. Le tabelle di controllo possono essere utilizzate per tenere traccia del valore prima e dopo dei dati modificati. Di solito salvano anche informazioni extra come la persona che ha apportato la modifica e l'ora in cui è stata effettuata la modifica.

Quindi queste tabelle di audit scoraggiano gli utenti abilitati a svolgere attività non autorizzate. Forniscono inoltre un mezzo per ripristinare i valori corretti.

SQL 2008 e versioni successive dispongono di una funzionalità integrata denominata Change Data Capture che può essere utilizzata per questo.


2
Purtroppo l'acquisizione dei dati di modifica è terribile per il controllo perché non è possibile acquisire l'utente che ha apportato la modifica (a meno che non lo si stia già memorizzando nel database).
HLGEM

0

Le tabelle di controllo vengono utilizzate da strumenti di controllo nativi o di terze parti che acquisiscono le modifiche ai dati che si sono verificate in un database, in genere includendo le informazioni su chi ha apportato la modifica, quali oggetti sono stati interessati da essa, quando è stata effettuata, nonché le informazioni sulla Accesso SQL, applicazione e host utilizzati per apportare la modifica. Tutte le informazioni acquisite vengono archiviate nelle tabelle di controllo e dovrebbero essere disponibili in formati intuitivi tramite esportazione o query.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.