【发布时间】:2010-09-14 08:58:44
【问题描述】:
我有一个关于我们在许多解决方案中看到的每条记录的两个附加列(timeCreated、timeLastUpdated)的问题。我的问题:有更好的选择吗?
场景:您有一个巨大的数据库(就表而言,而不是记录而言),然后客户来要求您为 80% 的表添加“时间戳”。
我相信这可以通过使用单独的表 (TIMESTAMPS) 来完成。除了明显的时间戳列之外,该表还具有正在更新的表的表名和主键。 (我在这里假设您使用 int 作为大多数表的主键,但表名很可能必须是字符串)。
假设这个基本场景。我们将有两个表:
付款:-(您通常的记录)
TIMESTAMP :- {当前时间戳} + {TABLE_UPDATED, id_of_entry_updated, timestamp_type}
请注意,在此设计中,您不需要本地支付对象中的这两个“额外”列(顺便说一下,这可能会通过您的 ORM 解决方案实现),因为您现在按 TABLE_UPDATED 和 @ 进行索引987654325@。此外,timestamp_type 会告诉您该条目是否用于插入(例如“1”)、更新(例如“2”)以及您可能想要添加的任何其他内容,例如“删除”。
我想知道您对此设计有何看法。我对最佳实践最感兴趣,什么是随着时间的推移有效和扩展的。参考、链接、博客条目非常受欢迎。我知道至少有一项专利(正在申请中)试图解决这个问题,但目前似乎没有公开细节。
干杯, 爱德华多
【问题讨论】: