一个或多个事实表

时间:2016-03-30 17:52:02

标签: database-design data-warehouse business-intelligence star-schema

我正在设计一个数据模型,用于报告参加课程的人员。我试图弄清楚我是否应该使用一个或两个事实表。

我需要计算的措施是:

- 学生总数

- 少数民族(按国籍过滤)

- 通过课程的学生数量

请注意,仅仅因为学生参加课程,并不意味着他们参加了考试,因此他们可能还没有课程成绩。

这给了我两组不同粒度的事实数据。

  1. 课程中所有学生的粒度。

  2. 完成课程并通过并失败的学生的粒度。

  3. 我看到的选项是:

    1. 两个不同粒度的独立事实表,它们共享一些维度。

    2. 一个事实表,但是对于没有通过/失败的学生,他们将被链接到DimResult中的一个条目,其中包含" No Result Yet"。

    3. 在混合粒度时是否有一套使用指南,或两种答案都有效并由我决定?

      显示两个事实表的计划的模式如下所示。

      感谢您的任何建议

      enter image description here

1 个答案:

答案 0 :(得分:0)

我看不出有两个单独的表用于注册和结果的任何优势,至少以图中所示的方式。

  • 很难确保学生只有她所注册课程的成绩。

  • 有关enrolement 结果数据的查询将始终必须在同一复合键上评估两个表。

如果学生每个注册课程最多只有一个结果,您可以将结果和奖励日期添加到注册实体,这两个可能为空。

如果您的用例中只有部分事实相关,则可以使用两个数据库视图轻松模拟两个表格场景。与两个表相比,两个视图不会出现一致性问题

如果学生可能有多个结果,可能是重复考试失败,那么结果实体应该是1:n链接到注册实体。