所有表/实体上是否都有“created_at”和“last_update_at”字段?

您所有表/实体上是否都有“created_at”和“last_update_at”字段?为什么?这是好还是坏做法? 

网友:
1、大多数模型相关表都有created_at、updated_at,如果我使用软删除,则deleted_at

2、只要有一个审计表来记录所有内容,了解谁改变了什么的完整历史记录

3、我宁愿有一个历史记录,记录谁创建/更新/删除什么以及何时创建/更新/删除内容。

4、updated_at 有时对于使缓存失效非常有用,方法是获取特定查询的最大 Updated_at 等。


5、我在所有表上使用的基本字段是

  • ID
  • UID for any public facing ids
  • createdBy
  • createdAt
  • updated On
  • updated By
  • State状态,我在 6 个月内不会删除数据,所有内容都设置为 0 表示删除,1 表示实时,它帮助人们在 6 个月后恢复了几次,可以放心地认为不再需要它了。

6、对于我们的主表,我们肯定有created(date)/createdBy、modified(date)/modifiedBy。我们还有软件(一组触发器)来跟踪对表的任何和所有更改(插入/更新/删除),以用于审计目的。

7、我总是告诉人们向他们的表添加 5 个字段,即使他们认为自己不需要它们(立即):

  • id - 显然是代理主键
  • created - 创建时间
  • modified  - 上次修改时间
  • deleted  - 因为您从未删除过数据
  • archived - 当您需要它时,对于历史记录或其他内容(例如将数据移动到其他地方),它会在那里

您可以添加一个或多个,例如最后更改者的 ID 等,具体取决于您的具体情况,但一般来说,这 5 个在任何情况下都有效(特别是如果其中 4 个(ID 是日期除外))。
由于国家代码等数据很少更改,因此不妨在代码中使用常量,并在新国家获得独立或其他任何情况时进行新的构建

8、Updated_at 特别适用于:

  • 增量备份
  • 了解错误
  • 缓存逻辑
  • 提供将数据导出到其他系统、轮询系统的提要
  • 它是免费存档,可以保持“默认搜索”页面快速且响应灵敏。让我们看看“活动”数据与“存档”数据。
  • 仪表板和用户行为报告。

9、我的字段有:

  • 创建日期。 (可编辑)
  • 添加日期。 (不可编辑)
  • 更新日期。
  • 删除日期。

我还将每个更改写入日志记录和差异,以便我可以在需要时回滚


10、因为我使用 Java + Hibernate 堆栈,所以我使用 Hibernate Envers 进行审计,并且所有内容都在单独的审计模式上的单独的审计表中进行。
审核模式上的每个条目都有一个更改类型(创建/更新/删除)、时间戳和与其关联的用户 ID。
您甚至可以通过为每个常规列添加一个二进制列来存储更改的特定列。
静态表不需要审计。除非您认为有人会走到state桌子上并开始添加/更新/删除行。

11、时间戳可能有助于解决公司环境中的冲突
或者有助于错误修复、数据跟踪、数据排序等。

banq注:这其实是变相实现:事件溯源