对于我的应用程序,有几个实体类,User,Customer,Post等
我即将设计数据库,我想存储创建和更新实体的日期。这是它变得棘手的地方。当然有一个选择是为每个实体表添加created_timestamp和update_timestamp列但不是那个还原剂?
另一种可能性是创建一个存储此信息的日志表,并且可以包含跟踪任何实体的更新。
有什么想法?我倾向于实施后者。
答案 0 :(得分:6)
单对数表对所有表的方法有两个我能想到的主要问题:
CreatedDate和ModifiedDate列不是冗余的,因为它们是在每个表中定义的。我会坚持使用这种方法,并在每个表上放置插入和更新触发器以填充这些列。如果我还需要记录进行更改的最终用户,我会跳过触发器并从我的应用程序代码中填充时间戳和用户字段。
答案 1 :(得分:5)
我使用“日志”或“事件”表执行后者。根据我的经验,“更新”的时间戳很快就变得令人沮丧,因为很多时候你发现自己不仅仅需要最新的更新时间。
答案 2 :(得分:0)
您需要多长时间在表示层中包含已创建/更新的时间戳?如果答案不仅仅是“曾经很长一段时间”,那么我认为通过在每个表格中添加这些列可以提供更好的服务。
答案 3 :(得分:0)
在我几年前工作的项目中,我们实现了触发器,它们更新了我们称之为审计表的内容(它存储了有关所做更改的基本信息,每个表有一个审计表)。这包括修改日期(以及最后修改日期)。
它们仅应用于关键表(不是连接或引用数据表)。
这消除了很多正常的挫败感,不得不考虑LastCreated& LastModified字段,但引入了使触发器保持最新的烦恼。
最后,触发/审计表设计运行良好,我们必须记住的是在ETL(!)之前删除并重新应用触发器。
答案 4 :(得分:0)
这是我工作的基于网络的CMS。创建和上次更新日期将显示在大多数页面上,并且将显示最后创建(和更新)页面的列表。管理界面也将使用此信息。