2014-06-05 40 views
0

比方說,我有:如何建模一個簡單調查的結果?

enter image description here

enter image description here

對於每一個問題會有很多答案(這是一對多?)和答案將通過單一的選擇(多種選​​擇選擇)。例如,我想知道爲給定問題選擇了多少次每個答案。用戶只能回答這些問題一次。

我找到了一些解決方案(如這個What mysql database tables and relationships would support a Q&A survey with conditional questions?),但他們似乎過於複雜。這是一個非常簡單的調查。沒有子問題,沒有不同類型的答案,沒有多重選擇。

我想用的是一個名爲question_answer_user的中間表,但是我不確定這個表和其他表之間的關係(它是一個複合主鍵?)。我需要它們,這樣我可以在ORM上對它們建模。

很抱歉,如果這似乎過於簡單,但我的大腦在瞬間

回答

1

完全炸一個一對多的關係,你可以通過把問題的主鍵(ID)到應答連接問題和答案表作爲外鍵。

這樣,您可以通過查詢具有特定問題ID的所有答案來訪問給定問題的所有答案。

對於合併用戶:您說用戶可以回答每個問題一次。用戶可以回答很多問題,許多用戶可以回答問題。在這種情況下,你應該在兩個具有問題ID和用戶ID的鏈接表中。通過這種關聯,你可以通過遍歷你的其他關係,看到特定用戶在每個問題上的回答。

+0

問題是'答案'表只是給出答案,而不是用戶選擇的答案......我應該讓這更容易理解,因爲我的命名約定是可怕的。 – Nimchip

+0

感謝您的幫助,我明白了。 – Nimchip

+0

我添加了一個名爲'Results'的表格,它帶有'Question'多對一的雙向關係。該表具有'question_id','answer_id','user_id',所有三種關係都是多對一。因此,我可以查詢他們中的任何一個來檢查答案。再次感謝! – Nimchip

0

如果您在有一組問題的情況下編寫調查問卷(例如,您對SQL有多少年的經驗?)和一組固定的答案(1-2,3-4,5 -6,7-8),那麼下面是一個很好的桌子設計。

questions 
id - longint (primary key) 
text - varchar (255) 

options 
id - longint (primary key) 
question - longint (foreign key to 'questions') 
displayorder - int 
text - varchar (255) (the text of the option) 

answers 
user - longint (foreign key to users' table) 
question - longint (foreign key to questions table) 
option - longint (foreign key to options table) 

的答案表將每用戶問題的一個記錄,記錄該用戶的答案給定的問題(例如,用戶#3回答問題#1與第4個選項)。

相關問題