2010-10-08 144 views
0

在我的OLTP數據庫中,我有一個由教師和學生組成的佈局。每個學生可以是任何教師的學生。學生也可以註冊一位教練,但不一定要預定任何學費(課程)。數據倉庫設計問題

在數據倉庫中,如何最好地建模?如果我爲課程,教師和學生創建一個維度表,併爲學生所學的課程創建事實表,那麼當教師想要查看學生採取的課程時,這將起作用。

但是,指導員將如何看看有多少學生註冊了教師但尚未上課?

在我的OLTP中,我有一個多對多的表格(InstructorStudents),它將每個學生與一個以上的導師聯繫起來。在OLAP數據庫中,這是不合適的。

這種情況下最好的模式是什麼?在這種情況下,多對多會合適嗎?我無法存儲哪個學生註冊到學生表中的哪個教師的列表,因此我覺得有必要使用另一個維度表,但是無法計算出應該包含哪些內容。

回答

1

如果事實表示事務,你似乎在這裏有兩個不同的事實:登錄UPS &教訓。總是有很多方法可以去,但也許你需要兩個事實表。它們可能具有類似的維度,除非註冊表具有類維度(類名稱,教師名稱等)。 Lessons表將與班級維度相關聯,但也與課程維度(日期,課堂使用等)相關。

還有其他一些方法可以做到這一點,但是從編程&報告角度來看,它們會更困難。

0

您需要一個沒有事實的事實表。請看下面的資源,它指的是一個例子貼近您的需求

http://www.kimballgroup.com/1996/09/02/factless-fact-tables/

+0

注意[僅鏈接答案](http://meta.stackoverflow.com/tags/link-only-answers/info )是不鼓勵的,所以SO答案應該是尋求解決方案的終點(而另一個參考文獻的中途停留時間往往會過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。有關更多信息,請參見[this](http://meta.stackexchange.com/a/8259/213634)。 – 2013-11-10 20:36:17