在PeopleSoft中,有效约会用于维护相同表中的历史和未来数据作为当前数据。要在“有效日期”表中查找当前行,您将查找将来不的最新生效日期的行。
然后在2016年8月24日,我会通过像这样的伪查询计算EmpId 102的当前薪水$ 100,000:
select * from ps_Employee_Salaries ES where
(ES.EmpId = 102) and
(ES.Effective_Date = (
select max(Effective_Date) from ps_Employee_Salaries ES_ED
where (
(ES.EmpId = ES_ED.EmpId) and
(ES_ED.Effective_Date <= ‘August 24th, 2016’)
)
)
);
同样,我还会通过运行上述伪查询并将102替换为103来计算EmpId 103的当前薪水70,000美元。
这种有效约会方法在大多数案例中运行良好,但对于需要跨多个Effective Dated表进行外连接的复杂查询,它可能是非高效的并且令人困惑。
有人可以向我描述以下内容:
1985年ACM文章“数据库中的时间分类法”由Snodgrass和Ahn撰写,是我在描述这种方法时唯一的非PeopleSoft文章。
(1) - 可以在此处(以及其他地方)找到 PeopleSoft 有效日期查询的更多描述:
http://peoplesoft.wikidot.com/effective-dates-sequence-status