`
MyDicta
  • 浏览: 19222 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库时间段合并

 
阅读更多

数据库时间段合并

 

项目中遇到一个有意思的业务需求,涉及到时间区间的合并与拆分;简化描述一下: 

假定系统中有两类用户:甲方,暂称债务人;       乙方,暂称为债权人 

    债务人和债权人之间可以生成许多实体对象;若当债务人与指定的债权人签订协议后,就意味着双方存在了关系,此时就要求对关系双方的实体对象打上标记,标记分三种,分别为:当前、已终止、没关系() 大概就是这个意思,当然实际中还有其它细节,这里就捡主要意思说。 

补充说明一下:因债务人针对每一笔协议可选择多个债权人,为体现其一对多关系,所以设计了两张表,协议表协议-债权人表。其中,协议可以是未来生效的协议,并且债务人针对同一债权人可以上传多笔协议,能自由维护债权人列表(即:添加和剔除债权人)

库表: 

    协议表(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过程代码

 

  • 大小: 3.5 KB
  • 大小: 40.7 KB
0
1
分享到:
评论

相关推荐

    Oracle时间区间段合并.pdf

    在Oracle数据库中,时间区间段的合并是...总结来说,Oracle时间区间段合并的算法利用了窗口函数和分组来识别和合并连续的时间段,能够有效地处理和分析时间序列数据,对于优化数据处理流程和提高查询效率具有重要意义。

    Oracle数据库的合并重组.pdf

    根据提供的文件信息,本文将对Oracle数据库从版本8.1.7到9.2.0的合并重组过程进行详细解读,包括配置文件的修改方法和启动监听器的步骤。同时,将对Oracle数据库系统的内存结构、数据库版本更新以及网络配置文件进行...

    数据库合并程序-易语言

    在数据库管理领域,有时我们需要将来自不同源头的数据集合并到一起,比如多个部门的独立数据库或者不同时间段的数据备份。数据库合并程序就是解决这类问题的有效工具。 数据库合并程序的主要功能包括: 1. **数据...

    MySQL数据库PDF文档

    聚合函数是指对数据库表中的数据进行合并和汇总的函数。常见的聚合函数包括SUM、AVG、MAX、MIN、COUNT等。 子查询 子查询是指在查询语句中嵌套另一个查询语句,以便更好地筛选和提取数据。子查询可以用来实现复杂...

    数据库基础阶段-SQL练习

    2. 数据类型:SQL支持多种数据类型,如数值型(INTEGER、FLOAT)、字符型(CHAR、VARCHAR)、日期时间型(DATE、TIME、TIMESTAMP)等。理解这些数据类型对于正确存储和检索数据至关重要。 3. 表连接:在处理多个...

    达梦数据库_SQL语言手册

    在未来相当长的时间里,仍将是数据库领 域以至信息领域中数据处理的主流语言之 由于不同的产品,大都按自己产品的特点对语言进行了扩充,很难完全符合 标准。目前在 市场上已将的符合夲作为衡量产品质量的重要指标,...

    时序数据库和LSM1

    2. **高效查询**:时序数据库设计允许快速执行多维度的聚合查询,例如查询某一时间段内的特定指标,或者按照时间、地点等标签进行分组统计。这在监控和分析场景中至关重要。 3. **数据压缩与存储成本**:考虑到海量...

    数据库面试题数据库面试题.

    1. **算法的执行效率与数据的存储结构**:算法的效率与数据的存储方式密切相关,不同的数据结构(如数组、链表、树等)对算法的运行时间和空间需求有直接影响。 2. **线性数据结构**:线性数据结构包括队列、线性表...

    Oracle数据库碎片整理

    随着时间推移,基于数据库的应用系统的广泛使用,产生的碎片会越来越多,将对数据库产生影响,使数据库的空间分配愈发远离理想状态。 2. 浪费大量的表空间。尽管有一部分自由范围将会被SMON(系统监控)后台进程周期...

    数据库结构和数据对比工具.

    在数据分析时,对比不同时间段或不同来源的数据,有助于发现问题和趋势。 在选择数据对比工具时,需要考虑以下几个关键因素: 1. 兼容性:工具应支持你正在使用的数据库管理系统,如MySQL、Oracle、SQL Server等。 ...

    数据库试题数据库试题

    3. **数据类型与表结构**:数据库中的每列都有特定的数据类型,如整型、浮点型、字符型、日期时间型等。表结构定义了表格的列名、数据类型和约束条件,如主键、外键、唯一性约束等,它们确保数据的完整性和一致性。 ...

    csv文件批量合并工具

    这对于需要整合来自不同来源或时间段的数据集的用户来说非常有用,例如,可能有多个日志文件或者销售报告需要整合在一起分析。 3. **保留标题行**:在CSV文件中,通常第一行包含列标题,这有助于识别数据的意义。这...

    数据库系统原理期末考试简答题.docx

    等值连接基于特定列的相等条件将两个关系合并,而自然连接是等值连接的一个特例,它要求连接的列是相同的,并且在结果中去除重复列。 数据库安全性控制是确保数据安全的关键措施,其中包括用户标识和鉴别、存取控制...

    AEW的组态王数据库KVADODBGRID控件关于查询、排序、数据删除例程

    此外,还需要将日期和时间合并成一个字符串以便于后续的操作。 #### 4. 控件自定义函数 - 通过定义控件的自定义函数,可以实现对日期控件的选择事件的响应。例如,在选择开始日期和结束日期后,可以通过编程来获取...

    数据库技术VB编程小例子源码小合集打包下载.rar

    MSFlexGrid 中输入资料、在DBGrid中实现下拉列表和单元格计算、在MSFlexGrid控件的网格中加背景图片、压缩数据库文件、利用拼音简码进行数据查询、锁住和解锁数据库、数据库数据备份、某一时间段内数据汇总、修复...

    数据库课程设计任务书

    处理需求关注用户需要完成的处理功能和对处理响应时间的要求。安全性和完整性要求则强调系统的数据安全和数据的完整约束。 2. 概念结构设计:在概念结构设计阶段,学生需要逐一设计分E-R图,然后合并分E-R图生成...

    电话计费管理系统数据库设计 (2).pdf

    1. 查询模块:用户和管理员可以查询个人或特定时间段内的通话记录,包括通话时间、通话费用等详细信息。 2. 计费模块:根据通话记录和费率,自动计算用户的账单,包括基本费用、附加费用和其他可能的优惠或罚款。 3....

    分布式数据库查询优化

    其中,通信代价是分布式数据库独有的,指的是不同站点之间传输数据所需的时间。在低速网络环境中,通信代价往往是总代价的主要组成部分。 - **响应时间**:从发送查询请求到接收到查询结果的时间间隔。在高速网络...

Global site tag (gtag.js) - Google Analytics