0

我正在設計一個數據模型,用於報告針對參加課程的人。我試圖找出我是否應該使用一個或兩個事實表。一個或多個事實表

措施,我會需要計算如下:

學生

的 - 總數量

-Number民族(和國籍過濾器)

誰通過一門課程的學生 - 數量

請注意,僅僅因爲學生在課程中,並不意味着他們已經參加過考試,因此他們可能還沒有課程成績。

這給了我兩組不同粒度的事實數據。

  1. 所有學生的課程粒度。

  2. 已完成課程且通過且失敗的學生的粒度。

我的選項,我看到他們是:在這個分享幾個維度不同粒度

  1. 兩個不同的事實表。

  2. 一個事實表,但對於沒有通過/失敗的任何學生,它們將鏈接到DimResult中具有「無結果」描述的條目。

在混合粒度時是否有一套指導原則,或者兩種答案都能正常工作,並由我來決定?

顯示兩個事實表的計劃的模式如下所示。

感謝您的任何建議

enter image description here

回答

0

我不能看到如圖所示的圖中有入學和結果兩個單獨的表,至少在過程中的任何優勢。

  • 這將是很難確保一個學生只有她的課程,其中也登記的成績。

  • 有關enrolement的查詢結果數據總是必須評估同一個複合鍵上的兩個表。

如果一個學生最多有一個結果爲每個註冊的過程中,你可以添加結果,並授予日爲報名單位,這兩個可能是空。

如果您有隻有部分事實相關的用例,則可以使用兩個數據庫視圖輕鬆地模擬兩個表方案。與兩個表格不同,兩個視圖不會出現一致性問題

如果學生可能有多個結果(可能是通過重複一次失敗的考試),則結果實體應與註冊實體1:n鏈接。

+0

我在考慮這是否可用於商業用戶,如果每個事實表只有一個粒度,他們將更容易使用數據透視表中的數據。 是否足夠合理?我現在對它進行額外的ETL工作,但這對我來說不是問題。 –

+0

這些用戶將直接在數據庫表上播放嗎?如果是這樣,他們應該足夠熟練以正確的方式解釋數據結構。如果不是,你仍然可以爲他們提供一些反映這兩種事實之間差異的用戶界面。請注意我對數據庫視圖的回答。 – TAM