数据库时间段合并
项目中遇到一个有意思的业务需求,涉及到时间区间的合并与拆分;简化描述一下:
假定系统中有两类用户:甲方,暂称债务人; 乙方,暂称为债权人
债务人和债权人之间可以生成许多实体对象;若当债务人与指定的债权人签订协议后,就意味着双方存在了关系,此时就要求对关系双方的实体对象打上标记,标记分三种,分别为:当前、已终止、没关系(空)。 大概就是这个意思,当然实际中还有其它细节,这里就捡主要意思说。
补充说明一下:因债务人针对每一笔协议可选择多个债权人,为体现其一对多关系,所以设计了两张表,协议表和协议-债权人表。其中,协议可以是未来生效的协议,并且债务人针对同一债权人可以上传多笔协议,能自由维护债权人列表(即:添加和剔除债权人)。
库表:
协议表(b_refactor_finance)
Name |
Type |
Comments |
Refactorfincode |
Varchar2(28) |
协议编号 |
Debtororgcode |
Varchar2(30) |
债务人 |
Begindate |
Date |
协议起始日 |
Enddate |
Date |
协议到期日 |
Createddate |
Date |
创建时间 |
协议-债权人表(b_refactorfin_creditors)
Name |
Type |
Comments |
Id |
Number(27) |
序号 |
Refactorfincode |
Varchar2(28) |
协议编号 |
Creditororgcode |
Varchar2(30) |
债权人 |
Status |
Varchar2(1) |
用户状态(0-启用,1-停用) |
Createddate |
Date |
启用时间 |
Stoppeddate |
Date |
停用时间 |
初步想法,应该都趋向于采用即时查询;也就是当需要展示标记时,即时判断实体的生成时间是否落在某笔协议内,然后再判断协议是否当前有效(即当前时间位于协议起始之间) 就能够把三种标记区分开来。
但实际业务中可能存在另一种情形(如图一):
图一
假定当前时间为10月,双方第一笔协议起始时间为1 - 6月;在这期间债权人上传了一笔账款,从当前来看,此账款标识应为关系已终止;若又存在另一笔协议起始时间为4 - 12月,此时双方关系的时段就应算这两笔协议时段的合并,即1 - 12月,账款标记为当前关系。也就是当协议时段存在重叠时,会导致关系时段被扩展,原打上的标记就不对了。
为解决此问题,需新加一张债务/债权人关系表,记录双方的关系区间。当协议相交时则合并;反之,协议终止则拆分。
库表:
债务人/债权人关系表(b_refactorfin_c_d)
Name |
Type |
Comments |
Id |
Number(27) |
序号 |
Debtororgcode |
Varchar2(30) |
债务人 |
Creditororgcode |
Varchar2(30) |
债权人 |
Begindate |
Date |
关系起始日 |
Enddate |
Date |
关系到期日 |
关系时段维护思路:(新增协议和协议终止实则为债权人被加入或移出协议的过程)
关系维护流程图
附件为Oracle过程代码
相关推荐
在未来相当长的时间里,仍将是数据库领 域以至信息领域中数据处理的主流语言之 由于不同的产品,大都按自己产品的特点对语言进行了扩充,很难完全符合 标准。目前在 市场上已将的符合夲作为衡量产品质量的重要指标,...
四、数据库维护和管理 1、数据库调整 数据库运行一段时间后往往产生一些不适应的情况,需调整,由DBA(数据库管理员)完成。 调整包括下面内容:调整关系模式与视图使之更能适应用户的需求;调整索引与集簇使数据库...
MSFlexGrid 中输入资料、在DBGrid中实现下拉列表和单元格计算、在MSFlexGrid控件的网格中加背景图片、压缩数据库文件、利用拼音简码进行数据查询、锁住和解锁数据库、数据库数据备份、某一时间段内数据汇总、修复...
由于数据库在运行一段时间后,由于对数据的不断的修改、删除和插入,导致数据库的物理存储变坏,其性能会逐步下降。这时需要数据库的重组织和重构造。 8. 设一个部门的数据库包括以下的信息: 职工的信息:职工号、...
参照 借阅信息 读者信息 读者编号 读者姓名 登记日期 有效期 读者身份证 借阅次数 应还时间 读者编号 图书编号 库存量 图书编号 出版社 作者 价格 借阅编号 借书日期 图书信息 参考 数据库sql图书管理系统全文共8页...
为可重复部署的过程设置自动化,例如在特定时间或日期执行数据库备份,MapReduce作业和脚本执行。无论您身在何处,都可以随时完成工作。 使用我们的内置模式可视化工具发现和探索您的MongoDB模式。分析文档并在集合...
据说现在很多商家还开通了云抢票业务,本质上是让你不要冲击12306系统了,把需求提前收集,在放票时,这些系统会进⾏排队与合并 购买,这种⼿段可以减少12306的访问并发。 抢⽕车票是很有意思的⼀个课题,对IT⼈的...
但是如果系统在运行一段时间后,这三张表的数据变的非常多,那么连接查询的性能将会变得很差,我们通常的做法是再设计一张横向表,将客户信息和产品信息全都放到销售流水表里去,这样应避免了关联查询。 表通常分为...
4、混合策略:将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构 分E-R图经过合并生成的是初步E-R图。修改、重构初步E-R图以消除冗余...
实验目的 掌握两段锁并发控制协议和基于时间印的并发控制协议。 二. 实验内容 1、利用多进程技术产生多个并发事务同时访问数据库; 2、实现基于两段锁协议的并发控制。 3、实现基于时间印协议的并发控制。 说明:2和...
顾名思义,需求分析也就是分析客户群所需要的是什么,对这方面的要求有了明确的 了解后,企业就可以进行有目的的工作,而不是浪费大量的人力、物力以及时间,最后 还不能保证客户的满意度。客户对数据库的满意程度...
2)需求数据的收集和分析:包括信息需求(信息内容、特征、需要存储的数据)、信息加 工处理要求(如响应时间)、完整性与安全性要求等。 3)编制用户需求说明书:包括需求分析的目标、任务、具体需求说明、系统功能与...
数据库系统原理 数 据 库 设 计 步 骤 简 述 数据库设计步骤简述 数据库技术是信息资源的开发、管理和服务的最有效的手段,因此数据库的应用范 围越来越广,从小型的单项事物处理系统到大型的信息服务系统大都利用了...
12.5.3合并备份 12.6 RMAN备份命令 12.6.1永久参数配置 12.6.2 RMAN中常用命令 12.6.3多通道配置 12.6.4归档Redo日志删除策略 12.6.5二进制压缩 12.7其他备份恢复技术 12.7.1用户管理备份 12.7.2导入导出...
通过对局部 E-R 模型的操作,解决各个 E-R 模型关于对象定义不一致问 题,以及对各个 E-R 模型进行合并优化等,最终形成数据库的全局概念模式。 本阶段的设计结果(局部和全局 E-R 图、具体数据库设计工具中概念结构...
R图 7 3.2.3 合并各分E-R图,得到总E-R图 7 第4章 逻辑设计 8 4.1 逻辑设计的任务和目标 8 4.2 阶段结果 8 4.2.1 将E-R图转换为关系模型 8 4.2.2 模型优化 9 4.2.3 数据库模式定义 9 4.2.4 用户子模式定义 9 第5章 ...
一、 系统主要功能需求 1 系统初始化参数的设置模块 2 单据登记模块 包括 登记请购单 登记入库单 登记出库单 登记入库退出单 登记出库退入单 ... 按各种条件进行数据的查询(如时间段、单据
中北大学 数据库课程设计 说明书 班 级: 学号: 姓 名: 学 院: 专 业: 方 向: 指导教师: 成 绩: 2014 年 6 月 随着城市人口规模的扩大和公安部门对城市与农村人口管理工作规X性的逐渐增强, 户 籍管理工作的...
PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...