2011-02-04 47 views
7

我有一個項目來創建一個asp.net mvc網站來生成一個測驗。 這是規範:多選題測驗引擎的數據庫模式的優秀設計是什麼?

  1. 對於訪問該網站的每個用戶,她/他會得到一個測驗。
  2. 每個測驗都包含一些選擇題。
  3. 每個問題都包含一個問題和5個相互排斥的選擇。

我能想到的最簡單的模型如下:

public class Problem 
    { 
     public int ProblemId { get; set; } 
     public string Question { get; set; } 
     public string A { get; set; } 
     public string B { get; set; } 
     public string C { get; set; } 
     public string D { get; set; } 
     public string E { get; set; } 
    } 

我不知道這是件好事。 你能否給我一個更好的設計建議?

+2

「堆棧溢出」?該網站已變得有感覺並且也在問問題? – 2011-02-04 03:24:03

+0

我很驚訝有人沒有早點得到那個用戶名。我幾乎要投票給他。 – 2011-02-04 03:26:51

+0

您可以爲每個答案選擇多個選項嗎? – 2011-02-04 03:28:59

回答

3

簡單直觀的設計總是最好的,因爲它們非常簡單,我們開始懷疑自己;-)。除了您還可以將問題本身存儲在正確答案之外,您的表現很好。那麼它不再只是一個問題。所以現在它是ProblemAndAnswer或QuizItem。

因此,這可以作爲多列存儲在一張表中。 但你也需要明白它的含義。這意味着你正在做一個的假設一個問題總是會有5個選擇。如果你將少於5個,那麼它就可以,因爲你可以存儲空值。但是,如果你將有更多?這是當單桌模型開始分崩離析時。你現在開始會想,一個問題真的可以有一個或多個選擇,並希望分裂成父子表......現在你已經做出了明智的決定;-)

4

屬性A到E?不,謝謝!我躺在了我的表如下:

Quiz (int QuizId, ...) 
Problem (int ProblemId, int QuizId, string Question) 
Answer (int AnswerId, int ProblemId, int Index, string Answer) 

字段名應該是不言自明的(指數是一個問題的答案排序指標,如果它們的順序事項)

3

Question有一個iddescription,這是問題的文本(「貓是祕密狗?」)。

編輯:此外,Question表有correct_answer_id,其對應於Answer表中的正確行。

Answerquestion_id,鏈接回其Questiondescription,這是答案的文字(「這取決於你的貓的顏色。」)。

在這個模式下,問題沒有硬編碼的答案。

1

我正在研究同一種數據庫結構。最好有一個選擇表來針對特定的問題ID插入選擇。測驗ID是一個單獨的表格,包括測試題和測試持續時間。

相關問題