当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server:时态数据库的时间间隔

MSSQL
开源MySQL公司停止提供企业版源代码tar包
细化解析:MySQL+Webmin轻松创建数据库
用mysql做站点时怎样记录未知错误的发生
SQL数据库操作类
如何利用SQL Server数据库快照形成报表
SQL Server中应当怎样得到自动编号字段
SQL Server数据库连接中常见的错误分析
详细讲解SQL Server数据库的文件恢复技术
轻松掌握SQL Server数据库的六个实用技巧
SQL Server数据库涉及到的数据仓库概念
深入了解SQL Server 2008 商业智能平台
剖析SQL Server 事务日志的收缩和截断
如何在不同版本的SQL Server中存储数据
怎样缩小SQL Server数据库的日志文件
SQL Server中两种修改对象所有者的方法
轻松掌握SQL Server存储过程的命名标准
怎样从旧版本SQL Server中重新存储数据
快速掌握如何使用SQL Server来过滤数据
教你快速掌握两个SQL Server的维护技巧
有效地使用 SQL事件探查器的提示和技巧

MSSQL 中的 SQL Server:时态数据库的时间间隔


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 128 ::
收藏到网摘: n/a

在文章开始呢,小编先介绍一下时态数据库,时态数据库是包含历史数据或同时也包含当前数据的数据库。如果说数据是事实信息的一种编码表达形式,那么时态数据就是与时间相关事实信息的编码表达形式。

我们现在就开始开发一些合适的表示符号。最初的,同时也是最基本的步骤是将时间间

隔定义为一个基本单位,而不是像前文中作为一对分离值处理。

时间间隔到底是什么?可以在时间间隔(从日期4到日期1 0)中供应零件P 1。但“从日期4到日期1 0指的是什么呢?很显然,它包括日期56789—那么起始终止日期(日期4和日期1 0)是否包含在内呢?有时我们希望时间间隔包含起始终止日期,而有时则希望它不包括起始终止日期。如果时间间隔包含开始日期4,那么我们说时间间隔对于起始日期是封闭的;否则说它对于起始日期是开放的。同样,如果时间间隔包含日期1 0,那么我们说时间间隔对于终止日期是封闭的;否则说它对于终止日期是开放的。

按照惯例,用括号把起始终止日期括起来表示时间间隔,圆括号表示时间间隔在此点上

是开放的,方括号则表示时间间隔在此点上是封闭的;例如,从日期4到日期10的时间间隔有如下四种:

[d 0 4d 1 0]

[d 0 4d 1 0)

(d 0 4d 1 0]

(d 0 4d 1 0)

注意:可能认为半开半闭的时间间隔有点奇怪,不过这四种时间间隔各有实际意义,实

际上常常会用到这种半开半闭的时间间隔。全封闭的时间间隔则很直观,我们会在下文中经

常使用。

如果用诸如[d 0 4d 1 0]的形式来表示时间间隔,那么就可以将S P F R O M TO中的属性F ROMTO合并起来,用单个属性D U R I N G来表示,它的值域为interval type。这样做的一个直接好处是避免了从{ S #F R O M }{ S #TO }

中随意选择一个作为主码;另一个直接好处是不会对起始终止时间是否封闭产生歧义,因为

可以用[d 0 4d 1 0][d 0 4d 1 0)(d 0 4d 1 0](d 0 4d 1 0)四种形式来表示时间间隔。还有一个好处是不再需要时间间隔约束“在FROM - TOTO对应的时间点不能早于F R O M对应的时间点”,因为已经在时间间隔类型中隐含地包括了约束“ F R O MTO”。第4个好处是不需要讨论哪些是非真正码的“时态码”,很多约束也可以得到简化。