日托机构可用席位应建模在维度表还是事实表中?
日托机构可用席位数:维度表还是事实表?
判断可用席位数的归属,核心遵循金博尔维度建模的核心原则:区分属性(相对稳定的描述性信息)和事实(随时间/事件变化的度量值),具体分两种场景讨论:
场景1:可用席位数静态或极低频变化
如果每个机构各年龄组的可用席位数长期固定(比如成立时核定后,半年/一年以上才调整一次),那么它属于维度实体的描述属性,适合放在维度表中——更准确地说,应构建「日托机构-年龄组」维度表(因为可用席位是机构+年龄组的组合属性),将可用席位数作为该维度的一个字段。
需注意:若后续席位数调整,必须用**缓慢变化维(SCD)**管理维度的历史版本,确保查询历史月度利用率时,能调用对应时间点的可用席位数,避免用当前值计算历史数据导致误差。
场景2:可用席位数高频(含月度)变化
如果可用席位数随时间调整(比如每月根据招生计划、场地变动更新),那它绝对属于事实度量,必须放入事实表:
- 你的事实表已记录月度已占用席位数,将同月度的可用席位数作为同一条事实记录的字段,可直接计算利用率(
已占用席位数 / 可用席位数),保证时间粒度的一致性; - 若放在维度表,当席位数更新后,历史月度的查询会自动使用最新的可用席位数,导致历史利用率计算失真(比如3月可用20、占用15,利用率75%,4月调整可用为25,若维度表存25,查3月数据会算出15/25=60%,完全不符合实际)。
总结
没有绝对的对错,核心看业务场景:
- 静态/极低频变化 + 能通过SCD管理历史 → 维度表
- 高频变化 + 需要和已占用席位同时间粒度匹配 → 事实表
结合你的月度事实表场景,若可用席位数是每月确定的,优先放入事实表,这是最稳妥的方案,能避免后续数据一致性问题。
内容的提问来源于stack exchange,提问作者JessiSexy
相关产品推荐
相关产品推荐

