簡體   English   中英

用於存儲問卷和多項選擇答案的數據庫模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM