Aym*_*rki 2 database-design sql-server t-sql
您将如何保留数据库中所有表的每个值的完整历史记录,可以使用特定日期(对于所有表的每一列)进行查询?我的意思是:人们只需要指定一个日期,该日期的值是“活动”或“有效”。
以一种愚蠢的方式,我会在每个表中添加一个“有效期开始日期”列。而不是复制每个值,我只会复制更改的值,并将所有其他列设置为 NULL。然而,这个解决方案真的很糟糕,因为它使查询复杂化,即使它占用的空间更少。
是否有一种特定的技术(我在 Microsoft 世界中)可以做到这一点,或者有一种特定的方法来为数据库建模来做到这一点(除了为每个表的每一列创建一个表)?
我想提一下,我不是 DBA 而是开发人员。赞!赞!
SQL Server 有一项在 SQL Server 2016 中引入的功能,称为Temporal Tables。使用系统版本控制的时态表本质上是使用触发器或应用程序逻辑维护表编辑的历史记录的开箱即用的替代方法。
临时表确实有许多限制和限制,这可能需要其他选项(例如手工制作的触发器和历史表),具体取决于您的用例。您需要查看完整的需求集,并与限制集进行比较。