爲在線考試模塊創建一個優化的數據庫。在線考試的Mysql數據庫設計
我有兩個選擇:
模式與即時通訊存儲同一行的問題,選項和答案。
表:問題 山口:q_id,問題,OPT1,OPT2,OPT3,OPT4,opt5,ANS
架構與具有用於每個操作3個不同的表D林。
表:問題 上校:q_id,質疑
表:選擇 上校:q_id,opt_id,選擇
表回答 上校:q_id,ANS
爲在線考試模塊創建一個優化的數據庫。在線考試的Mysql數據庫設計
我有兩個選擇:
模式與即時通訊存儲同一行的問題,選項和答案。
表:問題 山口:q_id,問題,OPT1,OPT2,OPT3,OPT4,opt5,ANS
架構與具有用於每個操作3個不同的表D林。
表:問題 上校:q_id,質疑
表:選擇 上校:q_id,opt_id,選擇
表回答 上校:q_id,ANS
模式2是更符合你應該瞄準的方向。
可能有一個第三選項:
q_id | question | options | answer
其中選項列是文本類型,並存儲的序列化陣列或JSON。
爲您提供的2種選擇:第二個同一個世界是選擇
我會用模式2,因爲它允許您添加答案任意數量的武器。
然而,您可以將table
的答案納入options
表中。
q_id | opt_id | option | correct
以這種方式,您也可以有多個正確的答案每個問題。
如果您想在考試選項中保持靈活性,架構2將是更好的選擇。但是,如果您確定每次都可以設置固定數量的問題,則可以考慮將表格「問題」和「選項」合併到一個表格中,並讓每個用戶的答案各不相同。
如果有答案的固定數量的模式1會更好
,但如果這個問題可以有任意數量的答案,這將是更好的
question_id,question,answer_id_of_the_solution
answer_id,question_id,answer
如果創建數據庫時,你是怎麼知道的它被優化? ;] – TBH 2010-12-08 11:32:40