- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在开发一个相当简单的调查系统。数据库模式将很简单:a Survey
表,与 Question
存在一对多关系表,与 Answer
是一对多关系表和 PossibleAnswers
表。
最近,客户意识到她希望能够仅向对之前某个问题给出了特定答案的人显示某些问题(例如,你买香烟吗?,后面会显示什么?你最喜欢的香烟品牌?,向不吸烟者问第二个问题是没有意义的)。
现在我开始想知道根据我的数据库模式实现这个条件问题的最佳方法是什么?如果question A
有 2 个可能的答案:A 和 B,以及 question B
仅当答案为 A
时才应向用户显示?
编辑:我正在寻找一种在数据库中存储有关需求的信息的方法。数据的处理可能会在应用程序端完成,因为我的 SQL 技能很糟糕;)
最佳答案
Survey Database Design
最后更新:2015 年 5 月 3 日
图表和 SQL 文件现已在 https://github.com/durrantm/survey 提供。
如果您使用此(顶部)答案或任何元素,请添加有关改进的反馈!!!
这是一个真正的经典,由数千人完成。它们一开始似乎总是“相当简单”,但要做好,实际上却相当复杂。为了在 Rails 中做到这一点,我将使用附图中所示的模型。我确信对于某些人来说这似乎过于复杂,但是一旦您构建了其中一些,多年来,您会意识到大多数设计决策都是非常经典的模式,最好通过动态灵活的数据结构来解决一开始。
更多详细信息如下:
Table details for key tables
答案表至关重要,因为它捕获用户的实际响应。您会注意到答案链接到question_options,而不是问题。这是故意的。
input_types 是问题的类型。每个问题只能是一种类型,例如所有 radio 拨号盘、所有文本字段等。当有(例如)5 个 radio 拨号盘和 1 个用于“包含?”的复选框时,请使用附加问题。选项或某种此类组合。将用户 View 中的两个问题标记为一个,但内部有两个问题,一个针对 radio 拨号盘,一个针对复选框。在这种情况下,复选框将有一组 1。
option_groups 和 option_choices 让您可以构建“通用”组。举一个例子,在房地产应用程序中可能会出现这样的问题:“该特性有多少年了?”。可能需要的答案在以下范围内:1-56-1010-25日25-100100+
然后,例如,如果存在有关相邻特性年龄的问题,那么调查将希望“重用”上述范围,以便使用相同的 option_group 和选项。
units_of_measure 顾名思义。无论是英寸、杯子、像素、砖 block 还是其他什么,您都可以在这里定义一次。
仅供引用:虽然本质上是通用的,但人们可以在此基础上创建一个应用程序,并且此模式非常适合 Ruby On Rails 框架,其约定例如“id”作为主数据每个表的键。此外,这些关系都是简单的 one_to_many 关系,不需要 Many_to_many 或 has_many 遍历。我可能会添加 has_many :throughs 和/或 :delegates ,以便轻松地从个人答案中获取诸如 Survey_name 之类的内容,而无需使用.multiple.chaining。
关于sql - 哪些 mysql 数据库表和关系可以支持带有条件问题的问答调查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540885/
I'm posting this in Q&A style as there are currently a few posts on S/O with similar questions and a
我正在尝试做一些我认为非常简单的事情——传递一个队列和一个函数,并将该函数应用于队列中的每个项目——但我无法编译它。 class Foo { public: void doStuff();
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 5 年前。 Improve th
我的密码使用的是 sha512,但 secret 问题和答案是纯文本。问题是:我需要散列 secret 答案吗?如果是这样,它使用什么数据类型,它仍然是 char(128) 吗?我假设 secret
以前是否有人使用 Freebase 作为知识库在问答机上做过任何工作?我在网上搜索了这个,但没有得到任何实质性的东西。有谁知道在输入非结构化问题并且 QA 引擎利用 Freebase 提供答案的这个领
以前是否有人使用 Freebase 作为知识库在问答机上做过任何工作?我在网上搜索了这个,但没有得到任何实质性的东西。有谁知道在输入非结构化问题并且 QA 引擎利用 Freebase 提供答案的这个领
我正在尝试编写一个您自己的时区转换器,我需要一种方法来确定该月的最后一天可能是哪一天。经过一些研究,我发现了寻找闰年的公式。 这是一个很小的贡献,但也许我会为其他人节省我花 20 分钟弄清楚并应用它的
我有一个 Azure Function(不在容器中)。 当我将其发布到本地 Azure 时,就可以了。 当我从 Azure Devops 发布它时,部署成功,但该函数无法运行。错误“Azure 函数运
当 __getitem__ 映射到内部序列类型时,以下哪一项是推荐的执行方式? class A: def __init__(self, ...): ... se
如何在我的 ng2 应用程序中使用预处理器?我正在使用 angular-cli 和 the original docs对我来说还不够清楚。此外,我想在全局范围内使用这些样式,而不仅仅是在组件范围内。
StackO 的 friend 们大家好。 最后一天,我研究了一种解决方案,将不同表中的特定值导出到一个 XML 文件中。主要问题:我有三层嵌套表。由于我在编写这些函数时遇到了问题,因此我想与您分享我
这是一个问答,这意味着我正在分享我对我遇到的问题的解决方案/答案: 问题是 getting started guide来自 apache 站点的并不完全是最新的,经过一些摆弄之后,我设法让示例工作。
我是一名优秀的程序员,十分优秀!