设计数据库表

时间:2013-08-03 18:52:26

标签: mysql database database-design

我正在实施一份问卷调查申请,其中包含不同类型的问题和答案。我的目标是以有效的方式创建数据库表,以便它们可以扩展。

2 个答案:

答案 0 :(得分: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    |       |
+---------+-------------+------+---------+---------+-------+

答案 1 :(得分:0)

在过去,我开发了一个类似的系统并执行了questions (id, question_text)表和answers (id, answer_text)表,以及一个question2answer (question_id | answer_id | correct )表,其中包含唯一索引(question_id,answer_id)以避免插入对同一个问题的答案相同两次。 '正确'是真的假标志表示答案对于该问题的答案是正确的。

这样,如果您想稍后在问题中添加答案,只需在答案表中插入答案并将其映射到question2answer中的问题。

这也允许您重复使用1个以上问题的答案。 (即,您不必在数据库中添加“是”和“没有”一百万次,您只需将现有的答案ID映射为'是& #39;对允许回答的新问题。