维度表的enddate-我们应该使用null还是99991231日期值

eqoofvh9  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(362)

关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。

10个月前关门了。
改进这个问题
我正在sql server上构建一个数据仓库,我想知道在处理维度表(scd类型2)中有关“end\u date”属性的当前记录时,最好的方法是什么。对于当前记录,我们可以选择使用诸如“12/31/9999”之类的日期文字或将其指定为null。除了“开始日期”和“结束日期”之外,维度表还有一个附加的“当前标志”属性。
这可能是一个次要的设计决策,但只是想看看在查询性能或其他方面使用一种方法是否有任何优势?

0kjbasz6

0kjbasz61#

我见过两种方式编写的系统。就我个人而言,我喜欢无限的结束日期(但不是 NULL 原因很简单:更容易验证type-2记录是否正确平铺,没有间隙或重叠。我只喜欢一个验证而不是两个--另一个是对 is_current 旗帜。访问数据的正确方法也只有一种。
也就是说,我目前正在开发的一个系统也会发布一个只有当前记录的视图。那很方便。
该系统不在sql server中。您可以尝试的一个优化是集群,以便当前记录都是同一位置的——假设它们更容易访问。这两种方法都可以。使用这样的聚集索引会使更新更昂贵,但它们可以方便地优化内存。

相关问题