每个人都认为 SQL 中时限层次结构的最佳表示是什么?
我的意思是:
- 在任何给定日期,您都有一个正常的树层次结构
- 这个层次结构可以每天更改
- 每个孩子在任何给定日期仍然只有一个父母
第一天...
Business
|
|-Joe
| |-Happy
| |-Sneezy
| |-Doc(*)
|
|-Moe
|-Bashfull
|-Sleepy
第二天...
Business
|
|-Joe
| |-Happy
| |-Sneezy
|
|-Moe
|-Doc(*)
|-Bashfull
|-Sleepy
在任何时候,孩子都可以第一次加入层次结构,也可以完全离开层次结构。(例如,新员工和退休员工。)
主要考虑:
- 更新层次结构
- 查看整个日期范围内的整个层次结构
- 报告层次结构中的整个子树
- 跨日期范围报告整个子树
我知道我目前是怎么做的,但我很想知道其他人会怎么做:)
编辑
我天真地假设了一些考虑因素,所以会更明确......
- 每个“团队”或“个人”在其他地方的维度表中都有一个唯一的 ID
- 其他事实表将使用这些 ID(例如,存储性能指标)
- 该结构需要促进跨日期范围的历史报告
- 使用 ETL 或触发器来维护替代结构是一种选择
通用性是最重要的(仅形成通用关系模式的一部分),并结合了易于使用的驱动报告(适用于任何日期范围内的树的任何部分)和可靠更新的能力。