【发布时间】:2009-04-19 10:21:49
【问题描述】:
在大家看来,SQL 中时限层次结构的最佳表示是什么?
我的意思是:
- 在任何给定日期,您都有正常的树层次结构
- 此层次结构可以每天更改
- 在任何给定日期,每个孩子仍然只有一个父母
第 1 天...
Business
|
|-Joe
| |-Happy
| |-Sneezy
| |-Doc(*)
|
|-Moe
|-Bashfull
|-Sleepy
第 2 天...
Business
|
|-Joe
| |-Happy
| |-Sneezy
|
|-Moe
|-Doc(*)
|-Bashfull
|-Sleepy
任何时候,孩子都可以第一次加入层次结构,也可以完全离开层次结构。 (例如,新员工和退休员工。)
主要考虑:
- 更新层次结构
- 查看整个日期范围内的整个层次结构
- 报告层次结构中的整个子树
- 报告整个日期范围内的整个子树
我知道我目前是怎么做的,但我很想知道其他人会怎么做:)
编辑
我天真地假设了一些考虑因素,所以会更明确......
- 每个“团队”或“人员”在其他地方的维度表中都有唯一的 ID
- 其他事实表将使用这些 ID(例如,存储性能指标)
- 结构需要促进跨日期范围的历史报告
- 使用 ETL 或触发器来维护替代结构是一种选择
通用性是最重要的(仅形成通用关系模式的一部分),结合易于使用的驾驶报告(适用于任何日期范围内的树的任何部分)和可靠更新的能力。
【问题讨论】:
-
你在乎时间吗?您是否需要知道这棵树在一天中特定时间的样子,还是它只是每天都在移动?
-
“跨日期范围”报告是什么意思?假设我要的是 3 月 1 日 - 3 月 31 日,而且每天的等级都不一样,那你会展示什么?
-
“你会展示什么?”这取决于报告的需要。它可能是某个汇总值(如果报告整个 3 月的“Moe”,那么它可能是与他的团队成员相关的某个指标的 SUM())可能会显示整个子树,显示每个指标的指标节点,以一种表示随时间变化的方式。这取决于报告。重要的是,模型会以相对容易查询的方式跟踪随时间的变化。
标签: sql database reporting hierarchy