2013-08-03 110 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映射为允许肯定回答的新问题即可。