根据主表更新从属表

时间:2015-09-16 06:05:26

标签: mysql database entity-framework

我正在尝试为多选题系统构建一个表,其中每个问题都有无限数量的选择可供选择(不是固定数量的选择)。这些选择的数量因问题而异。我正在尝试建立一个存储问题和选择的数据库。

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。有关如何做到这一点的任何建议吗?

2 个答案:

答案 0 :(得分:1)

您的结构将能够处理您正在寻找的要求。在表格Choices中,您可以使用组合questionID和choiceID的主键,以便您可以为每个问题使用从1开始的choideID,而不是尝试找出每个问题的选择开始的ID。

至于你不知道生成questionID的问题,假设你的questionID是一个auto_increment列,你可以使用你所使用的任何编程语言的last_insert_id函数来找出最后生成的questionID插入。由于您将有多个条目用于选择,因此您很难在单个SQL插入命令中执行此操作。

答案 1 :(得分:0)

如果您正在使用实体框架......

你应该保存问题(偶数字段"问题"是空的)并获得ID ...

如果用户取消所有内容,只需按ID删除该问题...