作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建调查构建系统,但不确定如何最好地存储数据。我可以看到的两个选择是:
例如,通过使用第一个,我会将如下内容存储为序列化数组:
Array
(
[name] => Survey
[sections] => Array
(
[0] => Array
(
[name] => Introduction
[pages] => Array
(
[0] => Array
(
[text] => Please answer the following questions.
[questions] => Array
(
[0] => Array
(
[text] => Are you male or female?
[answers] => Array
(
[0] => Male
[1] => Female
)
)
)
)
)
)
)
)
我看到的好处是:
使用简单的查询就可以很容易地在脚本中进行编辑,例如:
UPDATE surveys SET data = '$serialized_array'
我看到的主要缺点是:
我还听说将数据存储为序列化数组是不好的做法。虽然我猜这完全取决于上下文(或者我从谁那里听到的是错误的)。
通过使用第二个(将每个元素存储为相关表中的单独行),我将拥有这样的数据库结构:
调查
id name
1 Survey
部分
id name survey_id index
1 Introduction 1 0
页面
id text section_id index
1 Please answer these questions. 1 0
问题
id text page_id index
1 Are you male or female? 1 0
答案
id text question_id index
1 Male 1 0
2 Female 1 1
我看到的好处是:
我看到的主要缺点是:
我想问您的问题是:这两种方法中的哪一种(如果确实有)更适合手头的任务?我很想支持将数据存储为序列化数组,因为它似乎更易于构建且更易于控制。虽然我可以看到...优雅 ...将数据存储为相关表中的单独行。
如果有任何相关性,目前调查是使用 JavaScript 构建的:使用(特别是)jQuery 添加、删除和重新排序 HTML 元素,然后以表单形式提交成品(使用 $_POST
数组是我上面给出的例子)。
最佳答案
以规范化形式存储数据可能是解决此问题的方法。当您从用户那里收集答案时,通常是因为您想对结果进行一些分析。
通过以标准化形式存储,例如可以很容易地查看男性/女性响应者的百分比。
SELECT text, COUNT(*) AS count
FROM answers
WHERE question_id = 1
GROUP BY text
关于php - 序列化数组或不序列化数组 : how to store a survey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267491/
我是一名优秀的程序员,十分优秀!