热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

介绍DB2中执行基于时间的引用完整性

IBMDB210中的新时态特性为基于时间的数据管理提供了丰富的功能。例如,一个日期范围可分配给每行数据以指出您的应用程序或业务何时认为该行有效。支持跟踪此类业务有效性的表称作应用程序周期时态表,而且其业务时间周期可以是过去的、现在的或

IBM DB2 10 中的新时态特性为基于时间的数据管理提供了丰富的功能。例如,一个日期范围可分配给每行数据以指出您的应用程序或业务何时认为该行有效。支持跟踪此类业务有效性的表称作应用程序周期时态表,而且其业务时间周期可以是过去的、现在的或

对于有外键关系的父表和子表,可扩展引用完整性的概念来考虑传统键值,以及任何给定行的业务时间周期。本文将介绍这种时态引用完整性 (temporal referential integrity),以及如何在 DB2 中强制执行基于时间的一致性。本文内容适用于 DB2 for z/OS® 和 DB2 for Linux®, UNIX®, and Windows®。所有 SQL 样例已在 DB2 10.1 for LUW® 中进行了测试。

DB2 10 for z/OS 和 DB2 10 for Linux, UNIX, and Windows 引入了基于时间的数据管理,允许您查询和操作过去、现在以及未来的数据,同时保留所有数据更改的完整历史记录。DB2 中的时态特性集合也被称之为 Time Travel Query。

DB2 支持 3 类时态表:

  • 系统周期时态表:DB2 以透明的方式不断地保留已更新或删除行的历史记录。使用 SQL 语言标准的新结构,用户可以 “回到过去” 并查询过去任一选择点的。这是以内部分配的系统时间戳为基础,DB2 使用该时间戳来管理系统时间,也称之为事务处理时间。
  • 应用程序周期时态表:应用程序提供日期或时间戳以描述数据的业务有效性。SQL 的新结构支持应用程序插入、查询、更新和删除过去、现在以及未来的数据。DB2 自动应用约束条件和行分割 (row-split) 来正确地维护应用程序提供的业务时间,也称之为有效时间。
  • 双时态表:管理系统时间和业务时间。双时态表结合了系统周期和应用程序周期时态表的所有功能。这种结合使得应用程序能够管理数据的业务有效性,同时 DB2 可保存所有更新和删除的完整历史记录。

在本文其余部分,我们假设您熟悉 DB2 中应用程序周期时态表的基本知识。时态引用完整性 (RI) 的讨论也适用于双时态表中的业务时间。当您更新或删除业务时间中一个指定部分的数据时,应该了解如何创建和使用这些表,并了解 DB2 如何执行行分割 (row-split)。

什么是时态引用完整性?

一个示例

在本小节中,我们首先重温了关系数据库中传统的引用完整性 (RI),然后对时态 RI 展开讨论。我们的场景涉及一个虚拟业务,该业务从供应商处接收产品,然后将这些产品卖给客户,偶尔也会进行促销活动,在一定时间段内以折扣价格销售选定的产品。为了帮助您理解如何实现和执行时态 RI,我们使用该应用程序场景和样例数据。

传统 RI

清单 1 显示两个涉及管理该业务的表。父表,product_avail,提供的每个产品在其中都有一行,并识别提供该产品的供应商。子表,promotion,每个特价产品都有一行,由一个促销 ID、各自的产品 ID 和折扣价定义。两个表可能还有其他列,但是为了简单起见,这些列目前已经足够了。

清单 1. 父表和子表之间引用完整性的简单示例

				
CREATE TABLE product_avail(
    prodID     INTEGER NOT NULL, 
    supplier   VARCHAR(32),
  PRIMARY KEY(prodID) );

CREATE TABLE promotion(
    promoID    INTEGER NOT NULL, 
    prodID     INTEGER NOT NULL, 
    price      DECIMAL(10,2), 
  PRIMARY KEY(promoID),
  FOREIGN KEY (prodID) REFERENCES product_avail(prodID) );

因为只能对已有产品提供促销,所以 promotion 表中的每一行必须包含一个存在于 product_avail 表中的 prodID。这个条件被称为 引用完整性,由 promotion 表中的外键 (foreign key, FK) 约束声明并执行。有了该约束,任何试图使用 product_avail 表中不存在的 prodID 插入或更新促销表的操作都将被 DB2 拒绝。

推荐阅读
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 本文介绍了如何使用Power Design(PD)和SQL Server进行数据库反向工程的方法。通过创建数据源、选择要反向工程的数据表,PD可以生成物理模型,进而生成所需的概念模型。该方法适用于SQL Server数据库,对于其他数据库是否适用尚不确定。详细步骤和操作说明可参考本文内容。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • macOS10.12安装win10系统教程,实现双系统安装
    本文介绍了如何在macOS10.12系统上安装win10系统,实现双系统的安装。通过使用Boot Camp助理,选取win10系统镜像并分配系统容量,然后进行安装。安装完win10系统后,安装驱动并重启系统即可完成双系统的安装。 ... [详细]
  • 在Windows 10中点击“检查更新”按钮可能让你成为微软的测试补丁的“小白鼠”。微软每月的第三、第四周会向稳定通道的用户选择性发放“C”“D”测试补丁,而那些主动点击“检查更新”的用户可能会成为这些补丁的测试对象。这些补丁主要用于测试下一个Patch Tuesday的更新内容的稳定性,也可能用于修复个性化问题。因此,用户需要小心点击“检查更新”,以免遭受不必要的风险。 ... [详细]
author-avatar
TTTTTTTT-Tang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有