0

我正在为我的活动的访客创建一项调查。但是,自从我创建数据库以来已经有一段时间了。所以我需要一些帮助。

我找到了一些解决方案,但它们的范围很广,这是我不需要的。

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

我怎么从这里走?Answers 表需要与?Surveys_have_Questions 或有问题?

编辑:

正如以下链接中的答案所提到的,大多数调查都基于经典设计模式。我的就是其中一项调查。以下链接中的更多信息: 哪些 mysql 数据库表和关系将支持带有条件问题的问答调查?

4

2 回答 2

1

我可能会模拟用户进行调查的事件,可能是一个名为“User_Answer_Session”的表,其中包含指向调查和用户的链接;然后是“User_Answers”,它们与会话和问题相关联,并包含答案的实际 blob。我如何准确地模拟答案将取决于几件事(主要是我希望能够查找它们的稳健程度)。例如,我是否希望能够索引多项选择答案以实现极其快速的报告?如果是这样,那么您需要为此建模。这可能包括创建一个“Question_Options”表,该表是问题和可用选项之间的一对多...

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

于 2012-07-11T23:16:47.500 回答
1

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

调查

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;

等等

于 2015-11-02T02:43:11.273 回答