我正在爲K-12學校工作,並且正在開發成績簿系統。我也使用的現有的成績簿系統是基於Excel和VBA開發的。對於我來說,每學期末合併400個Excel工作簿總是一場噩夢。在暑假期間,我打算將所有數據放在數據庫中以便於管理和管理。需要針對學校評分系統的數據庫設計建議
我的問題是這樣的:
對於這樣一個成績簿計算密集型應用,是很好的計算存儲在一個表中字段,或者是它更好地只存儲原始數據並執行計算僅在前端?
Excel的成績簿系統的工作原理是這樣的方式......
- 教師檔案中得分/最高分的形式,每個分數爲每個學生的每一個評價。 (例如測驗1 = 5/10,家庭作業1 = 20/25等)
- 分數將按百分比計算並按每個組分進行彙總。 「組件」意味着測驗,家庭作業等。所以會有類似於「測驗平均= 90%,家庭作業平均= 80%等等」
- 不同的科目將有不同的最終成績明細,如「科學= 50%測驗+ 50%家庭作業,數學= 60%測驗+ 40%Homeworks「。
- 然後,每個學生的總平均成績通過獲得所有科目的平均值來計算。
以上所有內容在電子表格中都很容易製作,但我不知道如何在數據庫中實現它。
由於瞬間,我想的東西就像所有的評估都記錄像這樣的表:
tbl_scores
id
student_id
term_id
subject_id
component_id
assessment_id
raw_score
highest_possible_score #not sure about this cause this can be implied from assessment_id
難道是存儲計算有用(百分比每個分數項,組件平均,數據庫中的主題平均數,總體平均數等),並使用存儲過程和觸發器在新分數出現時更新它們?
或者,只是在前端存儲原始分數並計算所有內容才更好?這個選項比第一個更快,因爲知道這裏的SELECT查詢由於子查詢而真的會更復雜嗎?
順便說一句,我打算爲此使用PostgreSQL。
在此先感謝您的任何建議。
DashMug
除了我的文章,我想到的其中一個想法是繼續使用Excel作爲數據庫的前端。 Excel每次都進行計算,並且(可能)將計算結果存儲回數據庫。 – dashmug 2012-03-12 16:22:42