Mysql 简易测量数据库设计

Mysql 简易测量数据库设计,mysql,database-design,survey,Mysql,Database Design,Survey,我正在为我的活动的参观者做一个调查。 然而,我已经有一段时间没有创建数据库了。所以我需要一些帮助 我找到了一些解决方案,但它们非常广泛,这是我不需要的 访客需要保持匿名,但他们可以留下他们的电子邮件(单独的表格电子邮件,没有链接到任何atm)。 他们有大约20个问题,有些是开放的,有些是一个选项(收音机),有些是多个选项(复选框)。 这些问题需要重复使用。 就这样。 我只是不知道如何超越下图中的多对多。 我该怎么走?答案表需要与建立关系?调查有问题,还是有问题 编辑: 正如以下链接中提到的答案

我正在为我的活动的参观者做一个调查。 然而,我已经有一段时间没有创建数据库了。所以我需要一些帮助

我找到了一些解决方案,但它们非常广泛,这是我不需要的

访客需要保持匿名,但他们可以留下他们的电子邮件(单独的表格电子邮件,没有链接到任何atm)。 他们有大约20个问题,有些是开放的,有些是一个选项(收音机),有些是多个选项(复选框)。 这些问题需要重复使用。 就这样。 我只是不知道如何超越下图中的多对多。

我该怎么走?答案表需要与建立关系?调查有问题,还是有问题

编辑: 正如以下链接中提到的答案,大多数调查都基于经典设计模式。我的调查就是其中之一。更多信息请访问以下链接:

我可能会模拟用户进行调查的事件,可能是一个名为“用户-答案-会话”的表格,该表格有调查和用户的链接;然后是“用户答案”,它与会话和问题相关,包括答案的实际blob。我对答案建模的准确程度取决于一些因素(主要是我希望能够查找答案的力度)。例如,我是否希望能够为多项选择答案编制索引,以实现极快的报告?如果是这样,那么您需要为此建模。这可能包括创建一个“问题选项”表,这是一个问题和可用选项之间的一对多表


这应该会让你沿着一条好的道路思考。:-)

我不明白你为什么需要这些桌子!我认为它可以比这简单得多

surverys

desc VarChar
startDate timestamp
endDate timestamp
isOpen boolean
survery_id int (FK)
question Text
vote_count unsigned INT 
survery\u问题

desc VarChar
startDate timestamp
endDate timestamp
isOpen boolean
survery_id int (FK)
question Text
vote_count unsigned INT 
用户调查

user_id
survery_id 
unique key (user_id_survery_id) #to ensure no duplicate votes
这是全部:)。 当用户投票刚刚开始时

insert into user_survery (user_id,survery_id) VALUES (1,1);
update survery_questions set vote_count = vote_count+1;
当你需要得到一个明确的结果时

select * from survery_questions where survery_id = X;

等等。

这可能更适合程序员。stackexchange.com确切的原因是什么?我遇到了有关数据库设计的stackoverflow的各种主题。也许是数据库管理员。关于你的问题没有什么特别的。基本上是--“这是我的要求,告诉我答案”。您还根据您的用例和需求定制了问题,在这个过程中,在同一领域工作的其他开发人员不会对答案感兴趣。出于这两个原因,我认为您不符合stackoverflow准则。您应该能够通过添加响应者实体(该实体应取代您的“电子邮件”)来完成您的模型实体。应答者的电子邮件地址属性应为空。将应答者链接到带有表格的调查。假设您称该表格为SurveyRespondent,则为该表格指定其自己的主键。然后创建一个表格SurveyRespondentAnswer,链接到调查,并为每个给定的答案添加问题。添加记录答案所需的内容。Yo你暗示了一个问题的“元”设计,可以让你描述一个问题的可能答案…但是你可以看到,这已经不是一个“简单”的设计。我建议使用MongoDB,而不是创建一个“问题”允许问题差异的收集要容易得多。@gview,我有点紧张,因为我有大量的工作要做。所以我确实发布了这个想法,也许他们会给我一些答案。但因为ctrahey基本上说我应该尝试简化我之前遇到的设计,我冷静下来,再次检查,然后atadayakno’这是有效的。我只是需要更好、更冷静地回顾一下。好吧,我猜你会朝着这个方向发展:这是我已经尝试过的事情,但关系不可能是正确的,不是吗?此外,我不需要存储或了解回答问题的人的任何信息,除了他们的年龄、性别、他们参观活动的次数等。但这些问题不需要与用户或类似的问题联系在一起。你反对这种模式吗?关系可能开始变得复杂,但却是一个规范化的数据库(充满了关系)从长远来看,这将更好地为您服务。如果您对这样一个看似复杂的模式感到不舒服,请阅读一点关于规范化的内容……实际上,我对过于简单的模式感到不舒服,它们总是在将来的某个时候突然出现;解决方案通常是痛苦的。我并不知道这种设计更好允许更多的灵活性,但我有点匆忙,我的活动是在这个周末,我希望明天之前准备好一个数据库:x我也有书面调查,但我希望访问者在线填写调查。我已经从我在评论中发布的链接创建了数据库,但我对多对多关系不太熟悉船和如何处理数据的插入。信不信由你,我已经知道了。它真的没有那么复杂,我只需要更好更冷静地研究一下设计:)。现在我可以将数据库设计应用到我的在线调查中,并且很可能让访问者使用唯一的调查而不会出现任何问题。哇,三年后。在这段时间里,我继续前进,学到了很多东西。不过还是谢谢你。