-1

I am implementing a questionnaire application that has different type of questions and answers. My goal is to create database tables in an efficient way so that they will be scalable.

4

2 回答 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    |       |
+---------+-------------+------+---------+---------+-------+
于 2013-08-03T18:57:58.963 回答
0

过去我开发了一个类似的系统,做了一个questions (id, question_text)表和一个answers (id, answer_text)表,加上一个question2answer (question_id | answer_id | correct )在 (question_id, answer_id) 上具有唯一索引的表,以避免两次插入同一个问题的相同答案。“正确”是真的| false 标志表示该问题的答案是正确的,以用于评分目的。

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

这也允许您重新利用超过 1 个问题的答案。(即,您不必在数据库中输入“是”和“否”一百万次,您只需将“是”的现有答案 ID 映射到允许答案为“是”的新问题。

于 2013-08-03T19:02:11.747 回答