具有不同时间有效性的条目,同时保留外键约束

时间:2016-05-08 14:12:37

标签: sql-server database temporal temporal-database

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

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

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

有没有办法如何在允许外键约束的同时为数据库表中的每个条目存储有效性信息?这种需求是否合理?

1 个答案:

答案 0 :(得分:0)

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

另请注意,历史数据需要大量存储空间。