Database design 一个或多个事实表
我正在设计一个数据模型,用于报告参加课程的人。我想知道我是否应该使用一个或两个事实表 我需要计算的度量是: -学生总数 -国籍数(并按国籍过滤) -通过课程的学生人数 请注意,仅仅因为学生正在上课,并不意味着他们已经参加了考试,所以他们可能还没有课程成绩 这给了我两组不同粒度的事实数据Database design 一个或多个事实表,database-design,data-warehouse,business-intelligence,star-schema,Database Design,Data Warehouse,Business Intelligence,Star Schema,我正在设计一个数据模型,用于报告参加课程的人。我想知道我是否应该使用一个或两个事实表 我需要计算的度量是: -学生总数 -国籍数(并按国籍过滤) -通过课程的学生人数 请注意,仅仅因为学生正在上课,并不意味着他们已经参加了考试,所以他们可能还没有课程成绩 这给了我两组不同粒度的事实数据 课程中所有学生的粒度 完成课程并通过和失败的学生的粒度 在我看来,我的选择是: 两个不同粒度的独立事实表共享几个维度 一个事实表,但对于未通过/未通过的任何学生,他们将链接到DimResult中描述为“尚未获得结
我看不出两个单独的报名表和成绩表有什么好处,至少在图表中是这样的
- 很难确保一个学生只在她同时注册的课程中取得成绩
- 与登记和结果数据相关的查询始终必须在同一复合键上计算两个表
如果一个学生可能有多个结果,可能是通过重复一次失败的考试,那么结果实体应该与注册实体1:n链接。我在想,如果这对业务用户可用,那么如果每个事实表只有一个粒度,他们将更容易处理数据透视表中的数据。这样的理由足够吗?我现在知道它需要额外的ETL工作,但这对我来说不是问题。这些用户会直接在数据库表上玩吗?如果是这样,他们应该足够熟练,能够以正确的方式解释数据结构。如果没有,您仍然可以为他们提供一些反映这两种事实之间差异的用户界面。请注意,我补充了关于数据库视图的回答。