行に関するメタデータの保存に関するベスト プラクティスは何ですか?
銀行間金融送金の例を見てみましょう。次のTransfer
ようになります。
CREATE TABLE Transfers (
TransferID int,
FromTransit varchar(10),
FromBranch varchar(10),
FromAccount varchar(50),
ToTransit varchar(10),
ToBranch varchar(10),
ToAccount varchar(50),
Amount money,
Status varchar(50));
しかし今ではもちろん、人々はメタデータを見たいと思うでしょう:
ALTER TABLE Transfers
ADD
CreatedDate datetime,
LastModifiedDate datetime,
CreatedByUsername varchar(50),
CreatedByFullname varchar(200),
CreatedByWorkstation varchar(50),
VoidedDate datetime NULL,
VoidedByUsername datetime NULL,
VoidedByFullname datetime NULL,
VoidApprovedBySupervisorUsername varchar(50) NULL,
VoidApprovedBySupervisorFullname varchar(200) NULL,
VoidApprovedBySupervisorWorkstation varchar(50) NULL,
SentDate datetime NULL,
SentByUsername varchar(50) NULL,
SentByFullname varchar(50) NULL,
SentByWorkstation varchar(50) NULL,
SendApprovedBySupervisorUsername varchar(50) NULL,
SendApprovedBySupervisorFullname varchar(50) NULL,
SendApprovedBySupervisorWorkstation varchar(50) NULL,
SendConfirmationNumber varchar(50) NULL,
SentToRemoteMachineName varchar(50) NULL,
ReceivedDate datetime NULL,
ReceivedConfirmationNumber varchar(50) NULL,
ReceivedToRemoteMachineName varchar(50) NULL,
ReceivedByUsername varchar(50) NULL,
ReceivedByFullname varchar(50) NULL,
ReceivedByWorkstation varchar(50) NULL,
ReceiveApprovedBySupervisorUsername varchar(50) NULL,
ReceiveApprovedBySupervisorFullname varchar(50) NULL,
ReceivedApprovedBySupervisorWorkstation varchar(50) NULL,
ReceivedCheckedBySupervisorUsername varchar(50) NULL,
ReceivedCheckedBySupervisorFullname varchar(50) NULL,
ReceivedCheckedBySupervisorWorkstation varchar(50) NULL
)
これらはすべて明確に定義された値であり、転送に関連するハードコピーにすべて表示されます。
テーブルの変更の監査ログは既にありますが、次のようなものはキャッチされません。
UPDATE Transfers SET Status = 'TransferStatus_Received'
WHERE TransferID = 6744891
変更を加えた人のusername、fullname、およびmachine nameをキャッチします。しかし、転送の受け取りを「承認」する資格情報を入力するためにその人の肩越しにいたスーパーバイザーの名前を知ることはできません。
彼らが別の情報を追跡するように求めたとき、私の苛立ちが生じ、データテーブルにさらにメタデータ列を追加する必要がありました。
これはベストプラクティスですか?