2011-05-15 31 views
0

我在爲題庫的PHP項目中PHP:MySQL的:問題銀行數據庫設計

用戶可以創建一個問題,並分配給它的答案的數量不受限制我的數據庫設計的一個問題。

問題是我目前存儲的問題如下:

ID,提問,回答
1, 「罩顏色?」 「綠色= hgreen,黃色=黃色」

我存儲與所有的答案,作爲seperatore和=從應顯示用戶的價值分開的真正價值!

所以上面的例子是

<span>Hood color</span> 
<input type=checkbox value=hyellow>yellow 
<input type=checkbox value=hgreen>green 

更好的想法?

回答

1

是,創建一個不同的表的答案:

Table Questions: 
QuestionId 
Question 

Table Answers: 
AnswerId 
QuestionId 
Answer (real answer) 
Caption (caption to be shown to the user) 

編輯:

選擇的問題進行解答。如果沒有答案,問題將不會返回

select 
    q.QuestionId, 
    q.Question, 
    a.AnswerId, 
    a.Answer, 
    a.Caption 
from 
    Questions q 
    inner join Answers a on a.QuestionId = q.QuestionId 

變化inner joinleft join得到一個單獨的行,沒有答案的問題。在這些行中*。*將爲NULL。

其他的解決方案,首先查詢的問題的列表,並得到回答每個問題:

select 
    a.AnswerId, 
    a.Answer, 
    a.Caption 
from 
    Answers a 
where 
    a.QuestionId = <QuestionId you retrieved before> 
+1

幾乎是正確的 - 正確的答案 - 正常地正常化,th正確的答案應該在問題表中被引用爲FK - 但這可能是矯枉過正,更簡單的解決方案是將其存儲在答案表中。 – symcbean 2011-05-15 11:26:21

+0

不錯的解決方案,唯一的問題將是多選題。因爲有些問題不僅僅是答案,而且每個答案都會有一個真實的標題。所以如何做到這一點?多數民衆贊成我的問題 – Zalaboza 2011-05-15 13:27:28

+0

你可以加入這兩個表。請參閱編輯。 – GolezTrol 2011-05-15 19:22:19

0

PHP有一些很不錯的JSON支持,你可以將其保存爲一個JSON字符串({"green": "hgreen", "yellow": "hyellow"})

0

表用戶和一個表的答案(有2列或更多列,如「right_answer」和「wrong_answer」...)也許你可以使用mysql工作臺創建databse結構=)