我試圖設計MySQL表進行調查。MySQL:建模90是或不是問題統計支持調查
調查由6組問題組成,每組15個問題,共90個問題。 問題和問題的順序不會改變,並且有一些新的問題(每套15個問題)被添加的可能性。
他們都是'是或否'的問題,所以答案會以布爾方式保存爲真或假。
我還保存性別,國籍,用戶統計年齡。
- 我想得到兩個用戶之間相同答案的百分比。
- 我想得到一個人和多數人之間相同答案的百分比(多數是超過50%的答案)。
- 我想通過性別,國籍,年齡的組合來得到每個問題是或否的統計數據。例如,66%的回答是肯定的問題11號或韓國女性12%的人回答沒有對問題86號
所以我做了一個表來支持所有這些功能
問表
q_id PK(1 to 90)
q_text VARCHAR(100)
用戶表
u_id PK
sex TINYINT
nationality VARCHAR(20)
age TINYINT UNSIGNED
q_1 TINYINT
q_2 TINYINT
...
q_90 TINYINT
是否還好有一個表94列?恐怕列數會增加,因爲我添加了一些問題集。所以我splited答案設置表
設置1臺
s_id PK
u_id users_table
q_1 TINYINT
q_2 TINYINT
...
q_15 TINYINT
設置2臺
s_id PK
u_id users_key
q_16 TINYINT
q_17 TINYINT
...
q_30 TINYINT
等。我現在有6個表格,如果我添加新的表格,我現在可以添加新的表格。 我搜索一些關於這一點,我看到它會更好,如果我有答案
單獨的表回答表
a_id PK
u_id users_key
q_no question number(1~90)
answer TINYINT
恐怕答案表可得增長因爲答案表每個用戶可以獲得90行。 我真的不確定哪種設計更好。我搜索了stackoverflow的答案,但我無法找到適當的答案是或不是。
相同結構化數據上的更多行=非常好。添加更改DDL問題的更多列是糟糕的設計。添加數據通常比改變結構更好。 – xQbert