560 likes | 680 Views
时态数据库. 主要内容. 有效时间时态数据模型 时间规范化 时态查询语言 概念设计与逻辑设计. 什么是时态数据库 ?. 数据库应用组织信息时需要考虑时间因素 . 时态 DB 应用在数据库发展早期就有 . 主要由应用开发者来设计实现时态概念. 时态 DB 应用. 医疗 : 病人病历 保险 : 理赔及事故历史 金融 : 股价历史 人事 : 工资职位历史 银行 : 信用历史. 两个基本概念. 有效时间 ( valid time ): 现实世界中某事实为真的时间 . 事务时间 ( transaction time ): 某事实出现于数据库中的时间 .
E N D
时态数据库 上海交通大学计算机科学与工程系陆朝俊
主要内容 • 有效时间时态数据模型 • 时间规范化 • 时态查询语言 • 概念设计与逻辑设计 上海交通大学计算机科学与工程系陆朝俊
什么是时态数据库? • 数据库应用组织信息时需要考虑时间因素. • 时态DB应用在数据库发展早期就有. • 主要由应用开发者来设计实现时态概念. 上海交通大学计算机科学与工程系陆朝俊
时态DB应用 • 医疗:病人病历 • 保险:理赔及事故历史 • 金融:股价历史 • 人事:工资职位历史 • 银行:信用历史 上海交通大学计算机科学与工程系陆朝俊
两个基本概念 • 有效时间(valid time):现实世界中某事实为真的时间. • 事务时间(transaction time):某事实出现于数据库中的时间. • 与有效时间不同,事务时间可以与任何数据库实体关联. • 数据库应用中的时间一般需离散化. • Chronon:时态DBMS支持的最小时段. 上海交通大学计算机科学与工程系陆朝俊
关系模型的不足 • 对复杂时态信息的存储支持不足. • 例如:不支持时态重叠数据的自动归并. • SQL对时态查询的支持不足. 上海交通大学计算机科学与工程系陆朝俊
有效时间数据库 • 对关系模型进行扩展以克服前述两个不足. • 有效时间数据模型:时态表中所有元组都与一时间因素关联. • 两维表扩展了第三维:时间. • 每条元组都带有时态信息:表示该事实的有效时间. 上海交通大学计算机科学与工程系陆朝俊
两种时态表 • 事件表:持有时刻时间戳 • 例如实验数据总是存储在事件表中. • 状态表:持有时段时间戳 • 例如药物治疗情况可存储于状态表中. • 时段可用start和stop时间点表示 • 如[d04:d10]可表示第4天到第10天. 上海交通大学计算机科学与工程系陆朝俊
时段扩展关系模型 • 状态表和事件表的时态数据都表示为时段,因此可用时段时间戳方法来为时态DB建模. • 称为时段扩展关系模型,或历史数据模型. • 在这种时态DB中的表称为历史(history). • 每条元组存储实体的时态维:两列分别表示时段的端点. 上海交通大学计算机科学与工程系陆朝俊
例:时态关系SALARY 上海交通大学计算机科学与工程系陆朝俊
时段的点类型 • 在我们的时态数据模型中,时间点只有一种粒度,即应用中有意义的最小时间级别. • 如:若粒度为天,则DATE可作为时间点类型.这时称DATE是时段的点类型. • 类型T可作为点类型,必须满足: • 有全序> • 有first和last算符 • 有next和prior算符 • 时段由时间点的集合构成. • 时段[d04:d10]包含起点d04和终点d10. 上海交通大学计算机科学与工程系陆朝俊
时段比较运算 • 时段的比较基于其起止时间点. 运算符包括: • BEFORE • AFTER • DURING • CONTAINS • OVERLAPS • MEETS • STARTS • FINISHES • EQUAL 上海交通大学计算机科学与工程系陆朝俊
时段比较运算定义例 上海交通大学计算机科学与工程系陆朝俊
其他运算 • 关系模型中的标准运算并,差,投影,笛卡尔积. • 对时态关系的一个重要运算: fold. • 相邻或重叠时段的元组可做fold. 上海交通大学计算机科学与工程系陆朝俊
例:fold操作 上海交通大学计算机科学与工程系陆朝俊
主要内容 • 有效时间时态数据模型 • 时间规范化 • 时态查询语言 • 概念设计与逻辑设计 上海交通大学计算机科学与工程系陆朝俊
同步 • 给定关系中的一个时变属性(TVA)集称为同步的(synchronous),若每条元组中的TVA与时间戳一致地相关联. • 例: 若雇员涨工资当且仅当获得提升,且雇员永不降级,则工资与职位构成同步属性. 上海交通大学计算机科学与工程系陆朝俊
时态依赖 • 令R是时态关系,K是非时变键, Xi(i[1,n])是TVA,TS和TE是时间戳属性. • R具有时态依赖Xi T Xj当且仅当有元组t1和t2使得 • t1(K) = t2(K) • t1(Xi) = t2(Xi) XOR t1(Xj) = t2(Xj) • 时段[t1(TS),t1(TE)]和[t2(TS), t2(TE)]相邻 上海交通大学计算机科学与工程系陆朝俊
例:SalMgr中的时态依赖 <52, 18K, Smith, 5, 9>与<52, 20K, Smith, 10, 20> <52, 25K, Smith, 21, 29>与<52, 25K, Jones, 30, 38> 上海交通大学计算机科学与工程系陆朝俊
时间规范化 • R属于时间范式(TNF) iff R属于BCNF且不存在非键属性之间的时态依赖. • 若存在时态依赖,总可以通过划分属性及合并时段来将关系分解到两个以上时间规范关系. • 例:SalMgr可分解成Manager和Salary.(见下页) 上海交通大学计算机科学与工程系陆朝俊
例:SalMgr的时间规范化 上海交通大学计算机科学与工程系陆朝俊
时间规范化的必要性 • 时间规范化思想:要求元组在语义上互相独立. • 关系是集合,其元素(元组)必须相互独立. • 未规范化的TVR, 每条元组对于其属性的生命期具有不完全的信息,因此依赖于其他元组来确定这种信息. • 前例中,<52, 20K, Smith, 10,20>并不表示Manager属性上的值 “Smith” 的起止时间,即对于“Smith”值的生命期不具有完全信息. • 异步更新某属性可能割裂另一属性的生命期信息. 上海交通大学计算机科学与工程系陆朝俊
时间规范化的必要性(续) • 另一种异常:查询结果完全无意义. • 如:Smith何时成为52号雇员的经理? Empno, Mgr, Ts (Empno = 52 AND Mgr = ‘Smith’(SalMgr)) 下列结果不正确!(正确的是红色的两条) Empno Manager Ts ------------------------------------------------- 52 Smith 5 52 Smith 10 52 Smith 21 52 Smith 43 52 Smith 48 上海交通大学计算机科学与工程系陆朝俊
时间规范化的必要性(续) • 不同TVA可能以完全不同的速率改变,因此相对其他属性以较慢速率改变的TVA的值存在冗余. • 时间规范化避免了这种冗余和查询异常. 上海交通大学计算机科学与工程系陆朝俊
主要内容 • 有效时间时态数据模型 • 时间规范化 • 时态查询语言 • 概念设计与逻辑设计 上海交通大学计算机科学与工程系陆朝俊
时态查询语言 • TSQL • 时态数据库查询语言 • S. Navathe和R. Ahmed于1993年提出. • TSQL是SQL的超集,增加了: • WHEN子句 • 时间戳值的查询 • 按时间排序查询信息 • TIME-SLICE子句 上海交通大学计算机科学与工程系陆朝俊
样例数据库 E:雇员表, S:工资表, M:经理表, T:差旅表 E(eno, name, address, date-of-birth) S(eno, salr, TS, TE) M(eno, mgr, TS, TE) T(eno, city, country, cost, TS, TE) 上海交通大学计算机科学与工程系陆朝俊
时态投影 • 与标准投影类似,只能对非时态属性进行投影. • 投影后强制执行folding. 上海交通大学计算机科学与工程系陆朝俊
时态选择 • 增加WHEN子句,形如: WHEN a interval_compare_op b • a,b是时段 • interval_compare_op是如下算符: • BEFORE, AFTER, DURING, EQUIVALENT, ADJACENT, OVERLAPS, PRECEDES, FOLLOWS. 上海交通大学计算机科学与工程系陆朝俊
比较算符 [a,b] BEFORE [c,d] iff b < c [a,b] AFTER [c,d] iff a > d [a,b] DURING [c,d] iff (a c) & (b d) [a,b] EQUIVALENT [c,d] iff ( a = c ) & (b = d ) [a,b] ADJACENT [c,d] iff (c – b =1) | (a – d = 1) [a,b] OVELAP [c,d] iff ( a d) & (c b) [a,b] FOLLOWS [c,d] iff (a – d = 1) [a,b] PRECEDES [c,d] iff (c – b = 1) 上海交通大学计算机科学与工程系陆朝俊
查询例 Q1: 当Smith是其经理时,雇员125的工资. SELECT salr FROM S, M WHERE S.eno = M.eno and M.eno = 125 and M.mgr = ‘Smith’ WHEN S.INTERVAL OVERLAP M.INTERVAL Q2: 查询雇员23的接替Jones的经理,并查询这个事件发生时间. SELECT B.mgr, B.TIME-START FROM M A, M B WHERE A.eno = B.eno AND A.eno = 23 AND A.mgr = ‘Jones’ WHEN B.INTERVAL FOLLOWS A.INTERVAL 上海交通大学计算机科学与工程系陆朝俊
时态联接 • 特殊语义: 结果表的有效时间是两个联接表的有效时间的重叠部分. • 先组装非时态属性(叉积),然后排除掉不满足WHERE和WHEN中条件的元组. • 然后对每一条组装元组检查其源元组的有效时间是否重叠. • 重叠则输出一条联接元组,其有效时间是两个源元组有效时间的交. • 不重叠则排除此元组. 上海交通大学计算机科学与工程系陆朝俊
时态联接例 PROBLEMLIST Patient Problem TS TE -------------------------------------------------------------------------- J. Smith P1 14/Feb/1998 1/Mar/1998 J. Smith P2 10/Mar/1998 Now P. Jones P3 1/Apr/1998 12/May/1998 R. Franks P3 13/Feb/1998 1/Jun/1998 DRUGS Patient Drug VS VE ----------------------------------------------------------------------- J. Smith D1 20/Mar/1998 12/May/1998 P. Jones D1 1/Apr/1998 6/Jun/1998 R. Franks D2 4/Feb/1998 14/May/1998 上海交通大学计算机科学与工程系陆朝俊
时态联接例(续) 查询:求病人的病症和用药组合情况. TEMPORAL SELECT T1.Patient, T1.Problem, T2.Drug FROM PROBLEMLIST AS T1, DRUGS AS T2 WHERE T1.Patient = T2.Patient 结果表: Patient Problem Drug TS TE ------------------------------------------------------------------------------ J. Smith P2 D1 20/Mar/1998 12/May/1998 P. Jones P2 D1 1/Apr/1998 12/May/1998 R. Franks P3 D2 13/Feb/1998 14/May/1998 上海交通大学计算机科学与工程系陆朝俊
查询时间戳 • 查询满足特定条件的时间点或时段. • 查询目标包含后缀算符TIME-START或TIME-END. • 算符inter (即intersect): [a,b] inter [c,d] = [max(a,c), min(b,d)] 上海交通大学计算机科学与工程系陆朝俊
时间查询例 • 求所有雇员当工资低于40K时的经理与工资变动情况,并查询时段交集. SELECT M.eno, mgr, salr, (M inter S).TIME-START, (M inter S). TIME-END FROM S, M WHERE S.eno = M.eno AND salr < 40K WHEN S.INTERVAL OVERLAP M.INTERVAL 上海交通大学计算机科学与工程系陆朝俊
时态排序 • 时态DB中,一个实体的多个版本都与各自的非时变键(TIK)相关联. • 各时态版本有内在的序,查询可能需要直接引用这个序. • 时态关系称为时态有序的,如果具有相同TIK的所有元组按时间戳升序排序. • 这些元组的时间不重叠,可按起点排序. 上海交通大学计算机科学与工程系陆朝俊
时态排序例 • 每一TIK的元组与唯一序号关联. eno salr TS TE ----------------------------------------- 1 25 16K 3 7 2 25 18K 8 13 3 25 21K 17 22 4 25 25K 23 26 5 25 31K 27 30 6 25 34K 33 35 7 25 40K 36 38 1 61 17K 4 8 2 61 25K 9 11 3 61 31K 12 17 1 73 18K 10 16 2 73 24K 17 22 3 73 30K 25 31 上海交通大学计算机科学与工程系陆朝俊
时态有序关系的查询 求起步工资超过30K的雇员的开始时间和工资. SELECT FIRST(salr), TIME-START FROM S WHERE salr > 30K 上海交通大学计算机科学与工程系陆朝俊
聚合函数 • TSQL允许聚合函数作用在时段上. • 例:查询雇员45在经理Jones下工作的时期 SELECT eno, SUM (DURATION) FROM M WHERE mgr = ‘Jones’ AND eno = 45 上海交通大学计算机科学与工程系陆朝俊
Group by例 查询雇员出国比国内差旅多的年份. SELECT A.eno, A.TIME-START.year FROM T A, T B WHERE A.eno = B.eno AND A.country = ‘U.S.’ AND B.country != ‘U.S.’ WHEN A.TIME-START.year = B. TIME-START.year GROUP BY A.eno, A.TIME-START.year HAVING COUNT(UNIQUE B.TIME-START) > COUNT(UNIQUE A.TIME-START) 上海交通大学计算机科学与工程系陆朝俊
插入数据 • 插入新元组时可能需要施加Fold操作. INSERT INTO SALARY(eno, salr, TS, TE) VALUES (97, 28K, 5, 11) 上海交通大学计算机科学与工程系陆朝俊
修改数据 • 可能导致结果关系有更多的元组! • 将[t1,t2]内的元组的属性A改为y.设A在t1时值为x.有几种情形: ts _______________________ te t1 ___________ t2 ts _______________________ te t1 ______________ t2 ts _______________________ te t1 ___________ t2 上海交通大学计算机科学与工程系陆朝俊
修改数据例 UPDATE SALARY SET salr = 34 WHEN [18,25] WHERE eno = 97 AND salr = 35 ENO SALR TS TE 52 18K 5 9 52 20K 10 20 52 25K 21 38 52 31K 39 47 52 38K 48 Now 97 30K 12 17 97 34K 18 25 97 35K 26 Now 上海交通大学计算机科学与工程系陆朝俊
删除数据 • 与修改类似 上海交通大学计算机科学与工程系陆朝俊
主要内容 • 有效时间时态数据模型 • 时间规范化 • 时态查询语言 • 概念设计与逻辑设计 上海交通大学计算机科学与工程系陆朝俊
概念设计 • Snodgrass提出下列方法: • “概念设计开始时忽略时变特性. 着重描述当前现实,暂时忽略历史.设计全部完成后,再以应用的时变语义增强ER模式. 逐个考虑ER模式的组件,以时态语义annotate该组件. 实体,联系,属性,键都分别考虑.” 上海交通大学计算机科学与工程系陆朝俊
增加时态Annotation • 实体生命期 • 联系有效时间 • 属性有效时间 • 键属性:时变或非时变 上海交通大学计算机科学与工程系陆朝俊
逻辑设计 • 分两个阶段: • 非时态ER模式映射到非时态关系模式 • 将annotation施加于逻辑模式,修改模式以容纳时态因素. 上海交通大学计算机科学与工程系陆朝俊
施加时态Annotation • 用户定义的时间属性 • 每个属性映射到关联表的一列. • 实体生命期 • 两种时间戳: • 时刻 • 时期 上海交通大学计算机科学与工程系陆朝俊