gpt4 book ai didi

sql - 数据库设计 : Stored Record Edit History (Temporal Data)

转载 作者:行者123 更新时间:2023-12-04 18:25:22 26 4
gpt4 key购买 nike

我想将时间信息存储在数据库中。我想出了下面的设计。这是最好的方法吗?

MasterTable

  • 身份证

明细表

  • 身份证
  • 主表ID
  • 创建时间
  • 职位
  • 内容

虽然我觉得只有一个 ID 字段的 MasterTable 对我来说是可行的,但我看不出有其他方法可以将 Details 记录链接在一起。

是否有更简洁/标准的方法来执行此操作?

最佳答案

一个想法是按如下方式设计 2 个表:

实体表:EntityId - PK、标题、内容

EntityHistory 表:EntityId - PK、Version - PK、CreatedOn、Title、Content

一些想法:

  • 通常您只需要处理当前版本的行,因此在您加入数据等操作时,您的查询不会考虑以前的版本。从长远来看,这可能会对性能产生巨大影响、统计数据不准确、数据选择性会对指标选择等产生负面影响。
  • 如果您经常使用当前值和历史值,您可以将 View 定义为两个表的联合。
  • 如何管理添加新版本?在事务中,从 EntityHistory 中的 Entity 复制值(通过增加版本),然后用新值更新 Entity 行。或者,您可以在 Entity 表上定义一个触发器,该触发器将在后面进行欺骗。
  • 使用行版本列:http://technet.microsoft.com/en-us/library/ms182776(v=sql.105).aspx

关于sql - 数据库设计 : Stored Record Edit History (Temporal Data),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20609912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com