当前位置:  开发笔记 > 编程语言 > 正文

SQL - 表设计 - DateCreated和DateUpdated列

如何解决《SQL-表设计-DateCreated和DateUpdated列》经验,为你挑选了2个好方法。

对于我的应用程序,有几个实体类,User,Customer,Post等

我即将设计数据库,我想存储创建和更新实体的日期.这是它变得棘手的地方.当然有一个选择是为每个实体表添加created_timestamp和update_timestamp列但不是那个还原剂?

另一种可能性是创建一个存储此信息的日志表,并且可以使其包含对任何实体的更新的跟踪.

有什么想法吗?我倾向于实施后者.



1> MusiGenesis..:

单对数表对于所有表的方法有两个主要问题,我可以想到:

    日志表的设计(可能)会限制所有其他表的设计.很可能日志表有一个名为TableName的列,然后是另一个名为PKValue的列(它将存储您正在记录的记录的主键值).如果您的某些表具有复合主键(即多个列),则日志表的设计必须考虑到这一点(可能通过使用PKValue1,PKValue2等列).

    如果这是某种Web应用程序,那么触发器可用的用户身份将是应用程序的帐户,而不是Web应用程序用户的ID(这很可能是您真正想要存储在CreatedBy中的ID)领域).这只会帮助您区分Web应用程序代码创建的记录和其他创建的记录.

CreatedDate和ModifiedDate列不是冗余的,因为它们是在每个表中定义的.我会坚持使用这种方法,并在每个表上放置插入和更新触发器以填充这些列.如果我还需要记录进行更改的最终用户,我会跳过触发器并从我的应用程序代码中填充时间戳和用户字段.



2> Dave Markle..:

我使用"日志"或"事件"表来执行后者.根据我的经验,"更新"的时间戳很快就变得令人沮丧,因为很多时候你发现自己不仅仅需要最新的更新时间.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有