Каковы оптимальные методы хранения метаданных о строке с строке?
Возьмите пример межбанковского финансового перевода.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
Это отловит имя пользователя , полное имя и имя машины человека, который внес изменение;но он не может знать имя руководителя, который был за плечом человека, чтобы ввести свои учетные данные, чтобы "разрешить" перевод, который будет получен.
Мое обострение приходит, когда они просят другой часть информации, которую нужно отслеживать, и мне нужно добавить больше метаданных столбцов в мою таблицу data .
Это лучший метод?