我正在尝试为多选题系统构建一个表,其中每个问题都有无限数量的选择可供选择(不是固定数量的选择)。这些选择的数量因问题而异。我正在尝试建立一个存储问题和选择的数据库。
Table Question
{ // Though just two fields are shown, there are many fields in the table actually
questionId;
question;
}
Table Choices{
choiceId;
questionId;
choice;
}
有人可能会争辩说,我们可以通过拥有一个字段直接将选项直接输入到问题表中,但这会复制其他字段数据。就像我们对一个问题有10个选择一样,那么我们在Question表中会有10行,并且有很多重复。所以我把表分开作为问题和选择。
这里的主要问题。在问题实际创建之前,我们不知道问题ID是什么。在将数据输入选择表时,我们无法使用问题表中的问题ID。有关如何做到这一点的任何建议吗?
答案 0 :(得分:1)
您的结构将能够处理您正在寻找的要求。在表格Choices中,您可以使用组合questionID和choiceID的主键,以便您可以为每个问题使用从1开始的choideID,而不是尝试找出每个问题的选择开始的ID。
至于你不知道生成questionID的问题,假设你的questionID是一个auto_increment列,你可以使用你所使用的任何编程语言的last_insert_id函数来找出最后生成的questionID插入。由于您将有多个条目用于选择,因此您很难在单个SQL插入命令中执行此操作。
答案 1 :(得分:0)
如果您正在使用实体框架......
你应该保存问题(偶数字段"问题"是空的)并获得ID ...
如果用户取消所有内容,只需按ID删除该问题...