存储随时间变化的参数的最佳方式

时间:2018-02-15 16:05:54

标签: oracle design-patterns plsql oracle11g constraints

请考虑以下情形: 我们有一个执行某种计算的函数(让我们称之为current_fee)。

在那些计算中,我们还使用一个变量(比如说fee_table)在给定时间具有一定值(我们从辅助表中获取该变量的值 - current_fee)。 现在fee_table可以在4个月内保持不变,然后它会改变并获得一个新值,依此类推。当然我想知道目前的费用,但也应该能够找到“活跃”的费用。几天,几个月,几年......

因此,组织create table fee_table ( id number, valid_from date, valid_to date, fee number ) 的一种方法是

    select fee into current_fee form 
    fee_table where trunc(sysdate) between valid_from and valid_to;  

然后在任何时候 - 如果我想得到当前的费用,我会:

fee_table

不喜欢关于上述解决方案的问题是,很容易在valid_from中创建不一致的条目 - 例如:

- 重叠时间段(valid_to - (1/1/2012 - 1/2/2012) and (15/1/2012-5/2012)),例如([1/1/2012-1/2/2012],[1/4/2012-1/5/2012])

- 当前期间没有进入

- 在这些时期之间的例如$config['base_url'] = base_url().'index.php/blog';

等。

有人能建议更好的方法来处理这种情况吗? 或者可能是 - 如果我们坚持上述情况 - 在桌面上采取某种约束,检查,触发等以避免描述的不一致?

感谢。

1 个答案:

答案 0 :(得分:0)

感谢上述所有评论。因此基于props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); @Alex Pool

我倾向于以下解决方案:

表格

@William Robertson

数据:

create table fee_table  (
 id number unique,
 valid_from date unique,
 fee number
)

选择:

insert into fee_table_todel(tid, valid_from,fee) values (1,to_date('1/1/2014','dd/mm/rrrr'), 30.5);
insert into fee_table_todel(tid, valid_from,fee) values (2,to_date('3/2/2014','dd/mm/rrrr'), 20.5);
insert into fee_table_todel(tid, valid_from,fee) values (3,to_date('4/4/2014','dd/mm/rrrr'), 10);