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.
问问题
99 次
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 回答