时间数据库
目录
时间数据库
时态数据库存储与时间实例相关的数据。 它提供时态数据类型并存储与过去、现在和未来时间相关的信息。时间数据库可以是单时态、双时态或三时态的。
更具体地说,时间方面通常包括有效时间、交易时间或决策时间。
- 有效时间是指事实在现实世界中为真的时间段。
- 交易时间是将事实记录在数据库中的时间。
- 决定时间是指就事实做出决定的时间。
单时态
单时态数据库只有一个时间轴,可以是有效范围,也可以是系统时间范围。
双时态
双时态数据库有两个时间轴:
- 有效时间
- 交易时间或决策时间
三时态
三时态数据库具有三个时间轴:
- 有效时间
- 交易时间
- 决定时间
这种方法引入了额外的复杂性。
时间数据库与当前数据库(不要与当前可用的数据库混淆)形成对比,后者仅存储被认为在当前时间为真的事实。
特点
时间数据库通过提供以下一项或多项功能来支持管理和访问时态数据:
- 时间段数据类型,包括表示没有尽头(无限或永远)的时间段的能力
- 定义有效和交易时间段属性和双时态关系的能力
- 系统维护的交易时间
- 时间主键,包括非重叠周期约束
- 时间约束,包括非重叠xxx性和引用完整性
- 通过自动拆分和合并时间段来更新和删除时间记录
- 当前时间、过去或未来的时间点或持续时间的时态查询
- 用于查询时间段的谓词,通常基于 Allen 的区间关系
历史
随着 SQL 的发展及其在实际应用中的使用,数据库用户意识到,当他们将日期列添加到关键字段时,会出现一些问题。 例如,如果一个表有一个主键和一些属性,向主键添加日期以跟踪历史变化可能会导致创建比预期更多的行。 当以这种方式跟踪行时,也必须以不同方式处理删除。 1992 年,这个问题被认识到,但标准数据库理论还没有解决这个问题,当时新的正式标准也没有解决。
Richard Snodgrass 在 1992 年提议由时态数据库社区开发 SQL 的时态扩展。 作为对该提案的回应,成立了一个委员会来设计对 1992 年版 SQL 标准(ANSI X3.135.-1992 和 ISO/IEC 9075:1992)的扩展; 这些扩展称为 TSQL2,是该委员会在 1993 年开发的。 1993 年底,Snodgrass 将这项工作提交给负责数据库语言 SQL 美国国家标准的小组,即 ANSI 技术委员会 X3H2(现称为 NCITS H2)。 初步语言规范出现在 1994 年 3 月的 ACM SIGMOD 记录中。 根据对该规范的响应,对该语言进行了更改,并于 1994 年 9 月发布了 TSQL2 语言规范的最终版本
尝试将 TSQL2 的部分内容合并到新的 SQL 标准 SQL:1999 中,称为 SQL3。 TSQL2 的部分内容包含在 SQL3 的新子标准 ISO/IEC 9075-7 中,称为 SQL/Temporal。 TSQL2 方法受到 Chris Date 和 Hugh Darwen 的严厉批评。 负责临时支持的 ISO 项目在 2001 年底被取消。

自 2011 年 12 月起,ISO/IEC 9075,数据库语言 SQL:2011 第 2 部分:SQL/Foundation 在表定义中包含子句以定义应用程序时间段表(有效时间表)、系统版本表(事务时间表)和系统 -版本化的应用程序时间段表(双时态表)。 TSQL2 提案与 SQL:2011 中采用的提案之间的实质性区别在于 SQL:2011 处理中没有隐藏列,也没有新的区间数据类型; 相反,可以使用 PERIOD FOR 声明将两个日期或时间戳列绑定在一起。 另一个区别是用一组时间谓词替换了 TSQL2 中有争议的(前缀)语句修饰符。
SQL:2011 标准与时态数据库相关的其他功能包括自动时间段拆分、时态主键、时态参照完整性、带有 Allen 区间代数的时态谓词以及时间切片和顺序查询。