简单的调查数据库设计

时间:2012-07-11 23:05:10

标签: mysql database-design survey

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

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

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

我怎么离开这里?答案表需要与?有关系? Surveys_have_Questions,还是有问题?

编辑:

正如以下链接中的答案所提到的,大多数调查都是基于经典的设计模式。我的是其中一项调查。以下链接中的更多信息: What mysql database tables and relationships would support a Q&A survey with conditional questions?

2 个答案:

答案 0 :(得分:1)

我可能会对用户进行调查的事件进行建模,也许是一个名为“User_Answer_Session”的表格,该表格包含调查和用户的链接;然后是“User_Answers”,它们与会话和问题相关联,并包含答案的实际blob。 完全我如何建模答案将取决于一些事情(主要是我希望能够查看它们的强大程度)。例如,我是否希望能够为极快的报告索引多项选择答案?如果是这样,那么你需要为此建模。这可能包括创建一个“Question_Options”表,这是一个问题和可用选项之间的一对多...

这应该让你思考一条好路。 : - )

答案 1 :(得分:1)

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

<强> surverys

desc VarChar
startDate timestamp
endDate timestamp
isOpen boolean

<强> survery_questions

survery_id int (FK)
question Text
vote_count unsigned INT 

<强> user_survery

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;