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

MSSQL
巧用SQL链接服务器访问远程Access数据库
SQL Server如何删除群集实例
安装SQL 2005中的AdventureWorks数据库
SQL Server 2008中有关XML的新功能
SQL Server注入大全及防御
Sql Server 2000视图中小心使用*符号
Sql Server导出指定条件的数据
SQL Server 2008的在线事务处理
介绍SQL Server 2008的四项新特性
SQL Server 2008在数据仓库方面的一些优点
触发器对SQL Server数据库进行备份
设置在Access项目中检索的记录数
SQL Server关于SQL Agent使用技巧
把sql server所有表的所有者改为dbo
IIS、SQL Server和ASP.NET安全设置解决方案
SQL Server 2005日志文件损坏怎么办?
SQL Server数据库字典SQL语句
临时表在SQL Server和MySql中创建的方法
SQL Server数据库查询优化3种技巧
SQL Server数据库开发10个问题

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


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