php - 可更新的投票+解释数据库

标签 php mysql database database-design

我为我的用户提供了以下民意调查表格,但我不确定应该如何围绕它构建数据库。

用户将收到 20-30 个民意调查问题,如下所示:

你最喜欢什么颜色?

  • 蓝色
  • 绿色
  • 黄色
  • 红色
  • 其他

将能够选择上述答案之一,并且还必须提供大约 100 个单词解释他选择该答案的原因。

我目前有两张 table 。一份保存民意调查问题,另一份保存民意调查选项。我不确定的是我应该如何保存用户的答案。

问题是因为民意调查太大了,用户可以部分完成,稍后再回来,更改他的答案并继续,直到他 100% 完成,然后我就可以查看我的面板中的整个结果。所以他基本上可以保存自己的进度并随时更改。最重要的是,我想“删除”特定用户的整个民意调查,并能够重新进行,但同时保留他以前的答案的历史记录。

所以我不确定这样的表格是否是满足我需求的最佳选择:

id
user_id
poll_questiond
poll_answer
poll_text
last_update
status

似乎这样的事情会造成巨大的困惑。有更好的方法吗?

最佳答案

我会创建 3 个表:

table_polls

+----+---------------------+--------+
| id |     description     | status |
+----+---------------------+--------+
|  1 | Example description |      1 |
+----+---------------------+--------+

table_poll_options

+----+---------+-------------+
| id | poll_id | description |
+----+---------+-------------+
|  1 |       1 | Question 1  |
|  2 |       1 | Question 2  |
+----+---------+-------------+

table_poll_answers

+----+-----------+---------+----------------+---------------------+
| id | option_id | user_id |  description   |     created_at      |
+----+-----------+---------+----------------+---------------------+
|  1 |         1 |       1 | A valid reason | 1970-01-01 00:00:00 |
|  1 |         2 |       2 | Another reason | 1970-01-01 00:00:00 |
+----+-----------+---------+----------------+---------------------+

概括一下上面的内容:

民意调查有很多问题。

投票问题有很多答案

民意调查答案有一个用户。

<小时/>

这样,您就可以通过数据透视表将所有内容分开,并且不再需要在投票表中创建困惑的行。

如果您需要日期等额外信息,您当然可以扩展表格。

关于php - 可更新的投票+解释数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832592/

相关文章:

PHP While 语句仅从表中删除一行 Mysql PDO

php - 为 HTML 表单下拉列表指定默认选定项

python - 为MySQL数据库创建Api并使用Python连接到移动App

python - 从 django 数据库中获取多行?

java - 如何同时使用 Tomcat 的非阻塞连接器(NIO 或 APR)和 Apache Httpd?

php哈希密码创建

Mysql 按日期分组

mysql - 在 bash 脚本中使用带有 where 选项和长参数列表的 mysqldump

mysql - ZF - 使用 CASE WHEN 的 MySQL SUM 查询

mysql - 多列子查询不适用于笛卡尔积