2013-03-28 64 views
2

在我問我的問題之前,我只想感謝昨天回答我的問題 - >Countdown using javascript的所有人。在MySQL數據庫表中存儲多個字符串

理念:

我創建了使用PHP的測驗,但我想創造一個MySQL數據庫,並具有與所有的問題,答案和內部存儲選擇題的表。

問題:

由於測驗選擇題,我不知道如何去存儲在表中的選擇題的選項。我可以存儲這些選項,並讓每個答案用特殊字符分隔,並讓PHP獲取字符串並將選項分開嗎?

例如:問題:你最喜歡的顏色是什麼?選項:藍色=紅色=紫色=黃色(數據庫視圖)

你認爲什麼是這樣的最佳做法?

+1

Kingkero具有正確的答案,對於進一步閱讀搜索「關係數據庫設計」和「正常化」 – DavidB

+0

@DavidB那裏是他的回答正常化?它將如何處理多重答案的問題? –

+0

一般而言,如果您認爲在表中操作值的逗號是個好主意,那麼您應該閱讀關於關係數據庫的設計,如果您閱讀了關於該設計的內容,那麼您應該閱讀關於數據規範化的內容。如上所述,kingkero有答案,我試圖提供一些有用的進一步閱讀。你對評論有什麼貢獻? – DavidB

回答

2

我認爲最好的做法是使用多個表。一個是問題,一個是答案。該answer表將包含question_id以及一個標誌是否是正確的答案

它可能看起來像這樣

TABLE questions 
FIELDS: id, text 

TABLE answers 
FIELDS: id, question_id, text, correct 

的問題用一個領域所有問題的答案是,你可以不小心使用的字符使用一個分裂的答案的文字

+3

是的。不要將編碼值存儲在單個數據庫字段中,它會在做報告時讓你的生活變得生機勃勃。 – James

2

只是裏面,創建兩個表:

  • 個問題

    question_id,問題

  • 回答

    answer_id,question_id,回答

現在,您可以使用question_id

2

錶鏈接這兩個表:

測驗

quiz id (pk) 
quiz info (other columns) 

問題

question id(pk) 
quiz id 
question text 

回答

answer id(pk) 
question id 
answer text 

顯示給定的問題做測驗,問題和答案的聯接。

編輯:您既可以添加列的 '正確/錯誤答案(0/1)' 或有另一個表:

解決方案

方案ID(PK)
問題ID
答案編號

我沒有把在answers表中的「正確答案」因爲這是不好的正常化。

+0

您需要保存某個地方哪個是正確的答案 – kero

2

有一對夫婦的方式解決此問題:

  • 「正確」的方法是創建另一個表(讓你有一個表名爲「問題」,每個都有一個唯一的ID,並另一個名爲「答案」,其中每個有問題的ID)
  • 「簡單」的方法,這就是使用JSON(見json_encodejson_decode),這需要在一個領域中使用特殊字符等保健
2

可能有很多可能的模式d爲此,但我的建議是這樣的:

永遠不要存儲由逗號分隔在表上的值。

此表包含測驗。

測驗表

  • QuizID(PK)等
  • 列...

這對於每一個測驗的問題。

問題表

  • QuestionID(PK)
  • QuestionDetail
  • QuizID(FK)
  • 其他列...

這個擁有答案。

回答表

  • AnswerID(PK)
  • AnswerDetail

這對於每個測驗或者換句話說,每一個問題的正確答案,這是答案的關鍵。

Question_Answer_Correct表

  • QuestionID(FK) - 還與AnswerID
  • AnswerID(FK)的化合物的主鍵

這包含的用戶列表。

用戶表

  • 用戶ID(PK)
  • 用戶名
  • 其他列...

這包含一個指定問題的用戶的答案。這裏沒有QuizID,因爲問題已經連接到測驗表。

User_Answers表

  • 用戶ID(FK)
  • QuestionID(FK)
  • AnswerID(FK)
2

你就會有一個questions表,如下所示:

id |   question 
0    Do you even lift? 

id將是INT(11) PRIMARY_KEY AUTO_INCREMENTquestion只是TEXT。然後,你將有一個answers表:

id | question_id | answer 
0   0   Yes 
1   0   No 
2   0   Maybe 

這裏,question_id是指在questions表問題的ID。這些答案都屬於一個問題。這被稱爲Has many關係,因爲一個問題有很多答案。

這是通常的做法。實現它並不難,即使你不使用框架(他們中的大多數爲你工作)。

希望這有助於

相關問題