2011-03-18 61 views
0

我目前不知道如何設計這個表,所以我真的很喜歡一些建議。描述如下:在數據庫設計上需要幫助

表格將保存3個考試結果。

  1. 考試A:8個必修科目,有無限可選科目。
  2. 考試B:6個必修科目,有無限可選科目。
  3. 考試C:1個必修科目,4門可選科目。

功能要牢記:

  1. 每個受試者的結果需要被搜索(例如:找一個在考試中數學)
  2. 基本總額計算(如:計算有多少作爲數學考試A)

只要插入數據,我將能夠想到的東西,但是當把功能放入混音時,它不會工作。

我最後的手段是有一個表:studentid,考試,subjectcode,結果。這將以可搜索和可計算的方式工作,但從長遠來看,我有一種非常混亂和龐大的數據庫的感覺。

我目前的設計(由我的朋友給出): 每個主題及其結果都有自己的領域。它的工作原理很難擴展(添加更多主題)。

有什麼建議嗎?

回答

1

可能的表結構(留出列定義):

Exam 
--------- 
Exam_ID 
Exam_name 
number_of_req_subjects 
number_of_opt_subjects <---- -1 could be infinite 

Subject 
----------- 
Subject_id 
subject_name 

exam_subject 
------------ 
exam_subject_id 
exam_id 
subject_id 
required 

exam_result 
------------ 
exam_result_id 
exam_subject_id 
result 

要獲得對數學的數量考試答:

SELECT count(exam_result_id) 
FROM exam_result er, exam_subject es, subject s, exam e 
WHERE er.exam_subject_id = es.exam_subject_id 
AND es.subject_id = s.subject_id 
AND es.exam_id = e.exam_id 
AND e.exam_name = 'A' 
AND s.subject_name = 'MATH' 

(我知道用連接會比這裏更好加入不同的表格,但我有點懶惰)。

主題結果可被搜索...我們沒有足夠的信息。事實上,我的答案可能已經完全消失了,但是我認爲我現在可以通過給出的信息來得到答案。製作可搜索的內容只是創建一個足夠有用的選擇陳述的問題。

1

而不是寫一個全新的方法來達到你想達到的目的,我建議你看看Quiz Data Model。這是非常全面的,如果它沒有解決你需要的一切,你只需要做一些微小的調整就可以到達那裏。