数据库 – 如何避免在表中添加时间戳记字段?

前端之家收集整理的这篇文章主要介绍了数据库 – 如何避免在表中添加时间戳记字段?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个关于我们在许多解决方案中看到的每个记录的两个附加列(timeCreated,timeLastUpdated)的问题.我的问题:有更好的选择吗?

情况:您有一个巨大的DB(从表而不是记录),然后客户来,并要求您添加“时间戳”到80%的表.

我相信这可以通过使用单独的表(TIMESTAMPS)来实现.除了明显的时间戳列之外,此表还将具有要更新的表的表名和主键. (我假设这里使用int作为大多数表的主键,但表名很可能是一个字符串).

假设这个基本的情景来画图.我们会有两张桌子:

付款: – (你平常的记录)
TIMESTAMP: – {current timestamp} {TABLE_UPDATED,id_of_entry_updated,timestamp_type}

请注意,在本设计中,您不需要本机付款对象中的两个“额外”列(顺便提一下,可能会通过您的ORM解决方案),因为您现在正在使用TABLE_UPDATED和id_of_entry_updated进行索引.此外,timestamp_type将告诉您该条目是否用于插入(例如“1”),更新(例如“2”)以及您可能想要添加的任何内容,如“删除”.

我想知道你对这个设计的看法.我对最佳做法最感兴趣,随着时间的推移,它们有效和规模.参考文献,链接,博客条目都非常受欢迎.我知道至少有一个专利(待定)试图解决这个问题,但似乎细节目前不是公开的.

干杯,
爱德华多

解决方法

当您在此时,也记录进行更改的用户.

分离表设计的缺陷(除了其他人突出显示的连接性能之外)是假设每个表都有一个关键字的标识列.这并不总是真的.

如果您使用sql Server,新版本的2008版本支持它们称之为Change Data Capture的应用程序,可能会消除您正在讨论的许多困扰.我认为Oracle也可能有类似的东西.

更新:显然Oracle称它与sql Server相同.或者,sql Server称它与Oracle相同,因为Oracle的实现是第一个;
http://www.oracle.com/technology/oramag/oracle/03-nov/o63tech_bi.html

猜你在找的MsSQL相关文章