数据库 – 在数据仓库中表示时间间隔的最佳做法是什么?
特别是我正在处理类型2
Slowly Changing Dimension并且需要表示特定记录活动的时间间隔,即对于每个记录我有一个StartDate和一个EndDate.我的问题是关于是否使用闭合([StartDate,EndDate])或半开([StartDate,EndDate))间隔来表示这一点,即是否包括间隔中的最后日期.举一个具体的例子,说记录1从第1天到第5天是活跃的,从第6天开始记录2变得活跃.我是否将记录1的EndDate设为等于5或6?
最近我开始思考半开放区间最好基于Dijkstra:Why numbering should start at zero,以及Python中数组切片和range()函数的约定.在数据仓库上下文中应用它我会看到半开区间约定的优点如下: > EndDate-StartDate给出记录活动的时间 因此,我倾向于采用半开区间法.然而,如果有一些广泛采用的使用闭区间方法的行业惯例,那么我可能会倾向于使用它,特别是如果它是基于实现这样的系统的实际经验而不是我的抽象理论. 提前感谢任何见解或评论. 解决方法我已经看到使用的是封闭版和半开放版.出于你所说的理由,我更喜欢半开放.在我看来,半开放版本使预期的行为更清晰,更“安全”.谓词(a< = x< b)清楚地表明b意图在区间之外.相反,如果您使用闭合间隔并在SQL中指定(x BETWEEN a AND b),那么如果某人不明智地使用一行的结尾作为下一行的开头,则会得到错误的答案. 使最新结束日期默认为DBMS支持的最大日期,而不是null. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |