[英]database schema for storing questionnaires and multiple choice answers
在設計用於問卷和多項選擇答案的數據庫架構時,我們需要一些幫助。
第一種選擇是設計一個問題表和一個答案表,如下所示
* Question Table
- question_id auto integer
- question varchar
* Answer Table
- user_id integer
- question_id integer
- answer integer
但是,這種設計的問題在於,當用戶提交對問卷的答案時,需要插入多行,因此寫入和檢索都將變慢。 而且,桌子會很大。 但是,這樣做的好處是它可以擴展並且可以輕松添加新問題。
另一種方法是將所有答案放在同一行但在另一列中,如下所示
* Answer Table
- user_id integer
- answer_1 integer
- answer_2 integer
...
- answer_n integer
優點是,一次只寫入或檢索一行,因此比第一種方法快得多。 但是,模式將是嚴格的,並且如果添加任何新問題,則必須更改數據庫模式以適應新列。
我們有超過300萬用戶,每個用戶有多個調查表。 因此,速度絕對是一個標准。 根據這一標准,您更喜歡哪一個? 還有其他選擇嗎?
謝謝
您在第二種情況下建議的預期非規范化肯定會帶來一些性能提升。 最大的問題是,您是否需要能夠高效地搜索數據-可能無法收集關於答案的高級統計信息(即,有多少人給出3至6個答案)。
如果您不需要統計信息,則第二種選擇更好(在性能方面)。 如果這樣做,也許您應該堅持常規形式。
一種折衷方法是使用JSON而不是列來存儲數據。 結果可能存儲在PostgreSQL的jsonb
列之類的jsonb
,可以輕松查詢。 但是,您的問題被標記為mysql
,所以我不知道它是否適合您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.