【问题标题】:Entries with different time validity while preserving foreign key constraints在保留外键约束的同时具有不同时间有效性的条目
【发布时间】:2016-05-08 14:12:36
【问题描述】:

我有一些表格,其中每个条目可以具有不同的时间有效性。条目如下所示:(Id,ValidFrom,ValidTo)。可以有更多这样的条目具有相同的 ID 但具有不同的有效性。 (有效期不应重叠)。我需要在当前时间或未来任何时间点进行插入/删除/更新操作。

所有这些都可以在应用程序的业务逻辑中处理,但我想使用外键从其他表中引用此表。

我发现Temporal Tables 可能是这样,但有一个小问题。 SysStartTime 和 SysEndTime 列由 INSERT/UPDATE 的时间自动确定,不能在插入/更新时设置。

有没有办法在允许外键约束的同时为数据库表中的每个条目存储有效性信息?这样的要求合理吗?

【问题讨论】:

  • 由于ValidFromValidTo 上的不等条件,外键约束对这种类型的表很难。

标签: sql-server database temporal temporal-database


【解决方案1】:

临时表可以为您提供解决方案,前提是您的 FK 的主表也是临时表。至于validFrom和validTo的手动管理,可以(例如使用触发器)但容易出错。只是要解决一些问题:
1. 有效期不应重叠(已提及)。
2. 有效期不应有间隔。

还要注意历史数据需要巨大的存储量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2017-11-08
    • 2016-12-27
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    相关资源
    最近更新 更多