我正在尝试为多项选择题系统构建一个表格,其中每个问题都有无限数量的选项可供选择(不是固定数量的选择)。这些选择的数量因问题而异。我正在尝试建立一个数据库来存储问题和选择。
Table Question
{ // Though just two fields are shown, there are many fields in the table actually
questionId;
question;
}
Table Choices{
choiceId;
questionId;
choice;
}
有人可能会说,我们可以通过一个字段将选项直接动态输入到问题表中,但这会重复其他字段数据。就像如果我们对一个问题有 10 个选择,那么问题表中就会有 10 行,并且有很多重复。因此,我将表格分为问题和选择。
主要问题在这里。在问题实际创建之前我们不知道问题 ID 是什么。在将数据输入选项表时,我们不能使用问题表中的问题 ID。关于如何做到这一点有什么建议吗?
最佳答案
您的结构将能够满足您正在寻找的要求。在表 Choices 中,您可以使用结合了 QuestionID 和 choiceID 的主键,这样您就可以对每个问题使用从 1 开始的 choideID,而不是尝试找出每个问题的选项从哪个 ID 开始。
至于你不知道生成什么questionID的问题,假设你的questionID是一个auto_increment列,你可以使用你的last_insert_id无论您使用什么编程语言,都可以使用该函数来查找上次插入生成的问题ID。由于您将有多个选项条目,因此您很难通过单个 SQL 插入命令来完成此操作。
关于mysql - 基于主表更新从属表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32600897/