2012-12-19 39 views
0

因此,我自願爲本地教會的教育部門創建一個註冊系統。它應該能夠註冊新生並跟蹤他們的進度。以下是我已經成功地收集要求:將需求轉換爲關係模型的數據庫設計決策

  1. 的教育機構提供了一些課程。

  2. 課程有一個名稱和描述。

  3. 課程按層次組織。每個級別有幾門課程。

  4. 課程也有要求(即其他課程需要先採取)。

  5. 一名學生畢業時通過了該級別的所有課程。

  6. 如果學生不能通過課程,他可以重複多次,因爲他想要/需要。

  7. 學生每學期只能修一門課。

  8. 一個不活躍的學生是沒有參加本學期的學生。

  9. 老師每學期只教一門課程。教師每學期可以教授不同的課程。

  10. 可能有一個學期的老師沒教。現在

,這是我的關係模型。

[https://dl.dropbox.com/u/10900918/rmodels.jpg] [1]

我的問題是:

  1. 是否有遺漏任何表?

  2. 看學期+ semester_code_description:這是做到這一點的最好方法嗎?假設一年有兩個學期,每個學期的開始和結束月份相同(即第一學期:8月 - 12月,第二學期:1 - 5月),是否真的有必要參考semester_code_description表格?

  3. 我該如何改進設計?

對不起,我沒有包括任何箭頭。我正在使用的程序是一團糟。

非常感謝您提前寶貴的時間。

+0

這是一個家庭作業? –

+0

不是的。這是我參加的教會教育部門的義務工作。他們持有每張學生信息的卡片。每學期他們必須手動更新每張卡片。他們只是想數字化這個過程,以便節省一些存檔空間和紙張。 – ecr

回答

0

1)你的設計很棒。我沒有看到任何缺少的表 - 它看起來像你涵蓋了所有的要求。

2)semester_description表對我來說是否有意義,無論你是否需要它取決於你是否打算對這些數據做任何事情。

3)「學生每學期只能參加一門課程」的要求意味着Has_Taken關係的主鍵應該是(student_id,semester_id)。現在,我可以爲同一個學生和學期插入兩門不同的課程。對於Has_Teached關係也是如此。

一些其他的想法:

的「last_whatever」列在您的一些表將迫使您的實際應用一些額外的處理。您將需要一些機制來監視/更新這些機制。另一種選擇是從你的表中派生出它們。我可以通過查找帶有最大年份/代碼的學期來獲得學生的最後一個學期。

最後一個考慮,這些課程/描述/水平有多穩定?我在一所大學工作了好幾年,我們的課程將在一個學期的基礎上改變,迫使我們爲每次更改保存一份課程記錄的完整副本,因爲我們希望學生的記錄反映他們當時實際採用的內容。

下面是您的應用程序中的一個小例子。假設我畢業了一年級。然後一年後,教會增加了一門新課程(課程A)到1級。我將實際上是未畢業的B/C,現在有一門我沒有的課程(課程A )。

如果你的課程非常穩定,這可能對你無關緊要。祝你好運!