2013-08-03 147 views
-1

我正在實施具有不同類型問題和答案的調查問卷應用程序。我的目標是以有效的方式創建數據庫表,以便它們具有可擴展性。設計數據庫表

+0

可以你可以更改你的DBMS,如果可以的話,我建議你看看Postgresql上的Array Data Type。 http://www.postgresql.org/docs/9.1/static/arrays.html 我沒有知道你所有的要求,但可能是非常聰明的想法使用該功能 有了這個功能: 你只有1個表和2列 你不浪費磁盤空間 想一想。 –

回答

1

爲答案創建一個表,併爲答案創建一個表,然後在答案表中創建一個帶問題ID的外鍵。

喜歡的東西:

問表

+---------+-------------+------+---------+---------+-------+ 
| Field | Type  | Null | Key  | Default | Extra | 
+---------+-------------+------+---------+---------+-------+ 
| q_id | int   | NO | PRIMARY | NULL |  | 
| question| varchar(20) | NO |   | NULL |  | 
+---------+-------------+------+---------+---------+-------+ 

回答表

+---------+-------------+------+---------+---------+-------+ 
| Field | Type  | Null | Key  | Default | Extra | 
+---------+-------------+------+---------+---------+-------+ 
| a_id | int   | NO | PRIMARY | NULL |  | 
| q_id | int   | NO | FOREIGN | NULL |  | 
| answer | varchar(20) | NO |   | NULL |  | 
+---------+-------------+------+---------+---------+-------+ 
+0

你能解釋一下嗎更多? –

+0

喬還建議創建一個獨立的表來將多個問題連接到一個答案以及另一個答案辦法。 – Whistletoe

+0

這是一個問題,很多答案。經典的一對多外鍵。 – duffymo

0

在過去,我開發了一個類似的系統,並做了questions (id, question_text)表和answers (id, answer_text)表,再加上question2answer (question_id | answer_id | correct)表((question_id,answer_id)上的唯一索引),以避免將同一問題的相同問題插入兩次。 '正確'是真實的|虛假的標誌來表示爲了評分目的,該答案對於該問題是正確的。

這樣,如果您想稍後爲問題添加答案,只需在答案表中插入答案,並將其映射到question2answer中的問題。

這也可以讓您重複使用1個以上問題的答案。 (即,您不必在數據庫中輸入「是」和「否」一百萬次,您只需將現有的答案ID映射爲允許肯定回答的新問題即可。