“填补空白”

时间:2010-10-23 22:57:30

标签: django database-design

我正试图在django中做一个简单的“填空”类型的考试,并想知道什么是设计数据库的最佳方法。

示例:“9是4和5之间的总和,或3和6。”

在考试期间,上述句子显示为“__是__和_ 的总和,或_ 和__。”

显然这个问题的答案数量不限,但假设上述数字是唯一的答案。但问题是,你可以切换4和5的位置,或3和6的位置,仍然得到正确的答案。此外,空白的数量是未知的,因此它可以是1或更多。

1 个答案:

答案 0 :(得分:0)

我会选择类似的东西。首先定义一个问题表:

Question
--------------------------
Id     Text
1      9 is the sum of 4 and 5, or 3 and 6
...

然后保存隐藏子串的位置,让我们称之为另一个表中的字段:

QuestionField
--------------------------
Id  QuestionId  StartsAt    EndsAt      Set
1   1           0           1           1
2   1           16          17          2
3   1           22          23          2  # NOTE: Is in the same set as QuestionField #2
...

此表允许您通过查询问题表来检索字段的实际值(例如,条目1引用第一个问题中的值'9'。

“Set”列包含此字段所在的“set”的标识符,其中同一组中的字段可以相互替换。填充它时,您必须确保所有可以互相替换的问题都在同一个集合中。只要它是唯一的,集合的实际数量无关紧要。但是让它等于集合中某个元素的ID是有意义的。