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

MSSQL
如何在 SQL SERVER 中快速有条件删除海量数据
Transact_SQL 小手册
一个过滤重复数据的 SQL 语句
MS-SQL Server 2005 其中三个版本的比较
SQL Server 的 SQL 语句导入导出大全
一些 T-SQL 技巧
显示 Sql Server 中所有表中的信息
MS-SQL Server 中单引号的两种处理方法
sql数据库不能直接用instr函数
MDF文件在SQL Server中的恢复技术
SQL Server 中调整自增字段的当前初始值
如何创建SQL Server 2000故障转移群集
SQL Server连接失败错误及解决
最长用最基本的MSSQL数据库备份与还原
清除SQLServer日志的两种方法
如何强制删除或恢复SQLServer正在使用的数据库
如何恢复数据库备份到一个已存在的正在使用的数据库上
设定sql server定期自动备份数据库
xp_cmdshell开启与关闭
更改SQL Server更改当前数据库的所有者:sp_changedbowner

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 60 ::
收藏到网摘: 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个好处是不需要讨论哪些是非真正码的“时态码”,很多约束也可以得到简化。