数据库 – 审计表:表或表的每个字段
除了审计领域,我的项目中的一切都很好.只是插入和更新正在我们想象的宇宙中被审计.
我提出了一个像下面的例子一样的表: > best design for a changelog / auditing database table? 但是我的团队没有想到同样的方式,他们在每个表上放置一列以跟踪更新或插入时间.当我问为什么?他们告诉我,这是他们在工作中保持轨迹的方式. 最后我放弃了,我把每个字段放在每张桌子上.由于除了我以外的所有团队,都告诉我把这些领域. 例: 他们的做法 Table Customer +-------------+-------------+-----+--------------------------------+-------------+ | Name | LastName | ... | LastModification (Audit Field) | User | +-------------+-------------+-----+--------------------------------+-------------+ | varchar(30) | varchar(50) | ... | datetime | varchar(30) | +-------------+-------------+-----+--------------------------------+-------------+ 我的做法 Table Customer +-------------+-------------+-----+ | Name | LastName | ... | +-------------+-------------+-----+ | varchar(30) | varchar(50) | ... | +-------------+-------------+-----+ Table Audit +-----------+------------+--------+------+-------------+ | TableName | TableField | Action | User | DateAndTime | +-----------+------------+--------+------+-------------+ 所以问题是: 哪个是更好的设计,一张表可以保留交易的历史记录或每个表的一个字段? (Pro和cons) 解决方法
而不是专注于这两个选择,这是多年来与我合作的4种方法的答案.每个都有其利弊. 只有三个字段 只需将三个字段(最后一个操作,time_stamp,update_user)添加到每个表中,并将其称为一天. 优点超级容易.表现良好 缺点你不能报告你没有的数据,所以这个结构几乎没有告诉你(删除除外) 克隆表 每个表都有一个副本和三个审核字段,每次用户更改审计表插入的记录. 优点表现相当不错.容易创建用户可以挖掘的逐行历史记录. 缺点 >对基表的每次更改都需要对审计表进行相应的更改. 3.历史表只 没有基表只有历史表. 优点2,但一切都是插入.较少的维护,然后选项2. 缺点你最终会失去维护收益,因为你最终会维持观点,或者你会把现在的记录逻辑遍布整个地方 通用审计表 该表有四列(表*,Column_name,old_value,new_value)和三个审计字段. 优点易于设置和维护. 缺点 >它的直观,但它占用了很多空间,因为你的old_value和new_value字段必须是nvarchar(max)或等效的,所以它可以接受你的基表中的任何东西. 概要 我喜欢#2克隆表的方法,因为它似乎对我最好的工作.我遇到了#1不足的问题,#4可能是一个严重的噩梦,需要大量的工作才能撤消. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- BCB ADO ConnectionString
- 为什么“0D0”在SQL Server 2008中被视为数字?
- SQLserver2005express和stdio2008安装时的常见问题
- Windows下mysql修改root密码的4种方法
- SqlServer系列笔记――存储过程
- 校内网API的.net开源版本(非官方)
- 将MIT-BIH心律失常ECG数据库加载到MATLAB上
- sql-server – SQL Server:在proc定义中使用’WITH RECOMP
- sqlserver数据库版本之间的转换之Microsoft SQL Server Dat
- sql – 在Postgres中计算DST,选择计划的项目