2012-03-09 95 views
1

因此,對於我的軟件工程課程,作爲大型項目的一部分,我們需要使用HSQLDB實現數據庫。不幸的是,我還沒有進行數據庫設計,我們小組中有三分之二的人已經放棄了這門課程,讓我做這件事。SQL數據庫ER圖

截至目前,我已經想出這個ER圖表爲我們的項目: enter image description here

我們所擁有的是課程列表,以及每門課程包含多個模塊。每個帳戶都可以在任何課程中註冊,讓他們可以訪問課程的每個模塊,該模塊已評分,並且標記存儲在其帳戶中。

我想圖我已經拿出表示此相當好;不過,我今天剛剛開始瞭解這一點,所以我仍然有點不穩定,可以這麼說。

有什麼事情跳出來爲錯誤的這一點,或零件可以改進的?

P.S - 我只注意到在模塊表中,它包含了檔次,這實際上應該在module_grade。

+0

由於這是HW,我會問一些可能有助於指出可能改進的問題。如果學生(AKA賬戶)未通過必修課程會發生什麼情況?他們輟學嗎?你如何阻止一個學生參加一個沒有註冊的課程?你需要跟蹤學期或季度? 'course_grade'實體的目的是什麼?爲什麼'grade'應該是一種浮點數據類型與另一種類型?通過在「模塊」實體上使用複合主鍵可以獲得什麼好處(該問題是否可以通過索引來解決)? – gangreen 2012-03-09 05:08:04

+0

我們正計劃在下一次迭代中實施失敗,我們只有兩個人正在研究應該是一個5人項目。學生通過一個單獨的界面通過管理員帳戶添加到課程中。訪問數據庫的界面已經完成,我們已經有了一個存根。學期,宿舍沒有。我忘了在course_grade中輸入小數。它是module_grades的總和。我不知道爲什麼分數應該或不應該是一個浮動。我被告知切換到十進制。模塊上的PK是我沒有意識到的 – Tanner 2012-03-09 06:13:21

+0

只是稍等一會兒......有人會爲你解決這個問題。 ;) – 2012-03-14 04:40:30

回答

0

Course_grade表在您的模型中絕對無用。您應該將等級信息存儲在course_grade和module_grade中,而不是直接存儲在模塊中。將模塊看作主數據(所以你想用於所有學生),這意味着你不應該在其中存儲學生的具體信息。

我還會將時間戳添加到您的模型中,至少在具有成績信息的表內部,以便您至少可以檢查學生何時獲得信息。如果您也有可用的信息,那麼您應該存儲這些信息。

如果使用SQL來訪問你的模型考慮改變course_grade和module_grade外鍵列的東西,是獨一無二的。這使得查詢更易於閱讀。也許課程成績將course_id重命名爲cg_course_id。

+0

我認爲'module_grade'應該將FKs設置爲'module'和'account_course'(而不是account)。和PK三重'(number,course_id,acc_id)'。這是爲了確保學生只能註冊已註冊課程中的模塊並獲得成績。 – 2012-03-10 01:10:38