Database design 比较不同粒度的事实表

Database design 比较不同粒度的事实表,database-design,data-warehouse,dimensional-modeling,Database Design,Data Warehouse,Dimensional Modeling,我有描述[事件]和[事件分段]以及[事件工作人员]的事实表 [events]由许多[event_segment]组成,例如“简介”、“预检查”、“第一阶段”、“第二阶段”等。[events]的键(即粒度唯一id)是[event_ref],但是[event_segment]的键(即唯一标识符)是复合的-[event_ref]和[segment_order] [event_staff]有许多员工参与一个事件,因此唯一id由[event_ref]和[staff_id]组成 有几个一致的维度-例如日期、

我有描述[事件]和[事件分段]以及[事件工作人员]的事实表

[events]由许多[event_segment]组成,例如“简介”、“预检查”、“第一阶段”、“第二阶段”等。[events]的键(即粒度唯一id)是[event_ref],但是[event_segment]的键(即唯一标识符)是复合的-[event_ref]和[segment_order]

[event_staff]有许多员工参与一个事件,因此唯一id由[event_ref]和[staff_id]组成

有几个一致的维度-例如日期、位置等

我正在努力为这些数据确定一个模型,因为我希望能够轻松比较3个表中的汇总事实,特别是在报告中。i、 e.计数([staff])与总和([event_segment_duration]),其中[staff_type]=“basic”和[event_segment_type]!=”清理'

因为有很多员工参加一个活动,一个活动有很多环节,但我无法将员工与我必须分组的环节联系在一起[event_ref]

这“可行”,但在加入(很好地分组)事件时,它是否算是违反了金球/数据仓库标准


此外,如果[event_ref]存在于[event_segment]表中,因为它应该是代理键,因此不可用于分组?

我认为您没有违反任何标准

碰巧您有两个具有不同粒度级别的额外事实表

我认为你可以把这个片段看成是事件的一个孩子,所以你可以考虑事件维度的片段部分。

员工只是一个不同的维度(将一个维度拆分为多个子维度从来都不是一个好主意),员工维度的最低级别恰好不符合事件维度的最低级别


这是一个正常的实词场景,非常常见,你可以想象一个足球队,你可以有一些与
球员
s(儿童)相关的比赛统计数据,一些与
球队
(家长)相关,还有一些其他信息,比如每场
比赛
(不同维度)的门票这不能与特定的参与者相关联,但可以肯定的是,该参与者的详细信息不仅仅限于
团队
级别。

您可能会在上得到更多/更好的答案。这不是关于数据库管理,而是关于数据建模/数据库设计