2011-09-26 22 views
0

我需要爲數據庫制定一個方案。我的問題是,我有多個問題,他們屬於一個考試。這意味着:一個考試有多個問題。我不知道如何解決這個問題。我試圖用「tabQuestions」和「tabTest」之間的表格修復它,但我似乎不是正確的方法。將多個問題保存在一行中

我有以下表格:

tabTest: ID, Name, FK_Categorie, FK_Questions 
tabQuestions: ID, Question, FK_Answer 
tabAnswers: ID, Answer, FK_Solution 
tabSolution: ID, Solution 

非常感謝您的幫助! Luca

回答

2

您不需要tabTest中的FK_Question字段。您需要的是tabQuestion表中的FK_Test字段,您可以在其中存儲問題所屬測試的ID。

...如果我理解你說的對...?

如果我理解你是正確的,那麼你應該對模式的其餘部分也使用相同的。這意味着您需要在解決方案表中提供解決方案所屬答案的參考信息。

+1

+1 - 將問題鏈接到測試,而不是反之亦然 – JNK

+0

呵呵是的,這是簡短的說法...:) – Marco

+0

謝謝!現在它工作:)。解決方案非常簡單,但我花了這麼多時間,並沒有發現它...... thx – Luca

2

您需要爲此創建兩個表。一個用於exam (test),另一個用於questions

表考試(test)應具有:

test_id, test_name 

question應該有:

test_id (references test_id from test table), 
question_id , 
question_text. 

現在你可以有一個1:n的關係,其中一個測試,有許多問題。

但是不要,我再說一遍:不要將多個問題存儲在一行中。這違反了每一個可能的好數據庫設計。您的選擇,更新和插入幾乎不可能寫入。

This website似乎對你有很好的指點。

+0

謝謝你的幫助!小問題:爲什麼我不應該在一行中存儲多個問題?我有計劃將問題存儲在數組中,並將答案保存在答案中。你會如何解決這個問題? – Luca

+0

啊哈,我想我已經發現了。我的表「tabAnswers」我創建了一個「FK_QuestionID」行,我可以連接不同的答案與問題。 – Luca

+0

@Luca想象一下這種情況:您需要創建一個報告,在其中顯示正確回答第五個問題的用戶的百分比?你會怎麼做?你需要獲得所有的答案(意思就是說,你的數組)解析它,然後開始一個接一個地搜索,找出那些正確的答案。如果您將每個答案都存儲在不同的行中,則可以編寫單行查詢以獲取所需的全部內容。如果用戶沒有回答問題5會怎麼樣?你將有一個可變長度的數組,否則你將不得不開始按摩你的數據放入填充。它可能比這更混亂。 – Icarus

相關問題