多选题数据库模式设计
Questions with multiple choices database schema design
假设我们要创建一个测验应用程序,用户可以在其中创建具有以下特征的测验:
- 用户可以 select 从一组预定义的问题中为他们的测验提问。
- 每道题可以有多个选项(选择); 2、3、5、6、9,没关系。
- 问题及其选项由管理员添加(通过 Django Admin API)
我想出了一个相当简单的架构设计:
这就是上面的模式设计中发生的事情:
- 每题可多选
- QA 将问题映射到 select 由 did/took 测验
的用户编辑的答案
- 每个提交的测验可以包含多个问题及其答案
这种方法的缺点之一是我可以将问题映射到不属于该特定问题的选择列表的答案。例如,我创建了两个问题;
- 你结婚了吗?
- 你最喜欢喝什么?
对于第一个问题,我有以下选择:
- 是
- 没有
对于第二个问题,我有以下选择:
- 水
- 汽水
- 鲜榨果汁
从 Django Admin API,我可以映射第一个问题; 你结婚了吗?选择第二个选项; 汽水
我怎样才能避免这种情况?您认为这种方法还有哪些其他缺点?有没有更好的方法来设计这种模式???
我正在为这个特定项目使用 Django。
编辑:
正如您在下图中看到的,所有的选项都出现了,甚至包括那些不属于问题的选项。
有不同的设计选项,但您的架构非常适合其目的(假设您希望对整个 question/answer 集具有灵活性)。
我建议在 Django 中使用 ModelMultipleChoiceField 作为 QA 模型中的选择字段。它将包含一个包含相关选项的查询集(您通过查询与问题模型中的问题相关的所有选项获得)。这样您就可以将选择限制在与问题相关的范围内。
如果question/answer设置是固定的,只选择questions/answers改变,那么可能会有更好的选择(例如,你可以使用Django的choices
方法来定义选择一个问题,而不是将它们放在一个单独的模型中)。
假设我们要创建一个测验应用程序,用户可以在其中创建具有以下特征的测验:
- 用户可以 select 从一组预定义的问题中为他们的测验提问。
- 每道题可以有多个选项(选择); 2、3、5、6、9,没关系。
- 问题及其选项由管理员添加(通过 Django Admin API)
我想出了一个相当简单的架构设计:
这就是上面的模式设计中发生的事情:
- 每题可多选
- QA 将问题映射到 select 由 did/took 测验 的用户编辑的答案
- 每个提交的测验可以包含多个问题及其答案
这种方法的缺点之一是我可以将问题映射到不属于该特定问题的选择列表的答案。例如,我创建了两个问题;
- 你结婚了吗?
- 你最喜欢喝什么?
对于第一个问题,我有以下选择:
- 是
- 没有
对于第二个问题,我有以下选择:
- 水
- 汽水
- 鲜榨果汁
从 Django Admin API,我可以映射第一个问题; 你结婚了吗?选择第二个选项; 汽水
我怎样才能避免这种情况?您认为这种方法还有哪些其他缺点?有没有更好的方法来设计这种模式???
我正在为这个特定项目使用 Django。
编辑: 正如您在下图中看到的,所有的选项都出现了,甚至包括那些不属于问题的选项。
有不同的设计选项,但您的架构非常适合其目的(假设您希望对整个 question/answer 集具有灵活性)。
我建议在 Django 中使用 ModelMultipleChoiceField 作为 QA 模型中的选择字段。它将包含一个包含相关选项的查询集(您通过查询与问题模型中的问题相关的所有选项获得)。这样您就可以将选择限制在与问题相关的范围内。
如果question/answer设置是固定的,只选择questions/answers改变,那么可能会有更好的选择(例如,你可以使用Django的choices
方法来定义选择一个问题,而不是将它们放在一个单独的模型中)。