我知道有一些相关的帖子,但我不完全明白该怎么做.
我对如何解决这个问题有一个大概的了解.不幸的是,我对数据库设计并不太了解,所以我需要帮助.
拥有带有questions_id的表,为每个question_id提供for_answer_id表.
然后有一个链接表question_answers with user_id,question_id,answer_id,timestamp来注册提交的表单.
但我的问题是,一些问题只用一个字符串来回答,所以我无法概念化该怎么做.
e,g for some I need: question_id string_answer (any answer is allowed) for others: question_id answer_id (out of set of allowed answers) and perhaps: question_id bool_answer (true/false)
我是否在某处添加了question_type,因此我有两个不同的表格?
如果问题不明确,请告诉我.
编辑以考虑尤金的问题。
以下是您的系统需要的表格以及每个表格的说明。
1人
该表将包含有关参加测试的人的所有信息。表的键是人员 ID,它是一个整数,会随着添加到表中的每个人员行自动递增。当前大多数数据库都有一个标识整数或自动递增整数,这通常是表的主键。
2. 问题
该表包含您曾经想过要问的所有问题。
问题表将包含一个标志(整数或字符),用于指示问题的类型,正如您所概述的那样。
3. 回答
该表包含问题表中需要一组分配答案的问题的答案集。答案集的组键是问题的主键。
通过编程,您可以从问题表中选择一行。仅当标志设置为分配的答案时,您才会在单独的 SQL 查询中浏览答案表。
4. 测试
该表包含测试的创建日期和时间。
5. 测试题
此表包含从问题表中为一项特定测试选择的问题。测试问题集的组键是测试表 ID。
拥有测试问题表的原因是可以在问题和答案表中添加、更改或删除问题和答案。测试问题表是一个历史表,一旦添加行,就永远不会更改或删除。
6. 测试
该表包含参加测试的人员的人员 ID、测试的测试 ID 以及进行测试的日期和时间。
7. 测试答案
该表包含测试的答案。测试答案集的组键是测试 ID 和测试问题 ID。