gpt4 book ai didi

php - 序列化数组或不序列化数组 : how to store a survey

转载 作者:行者123 更新时间:2023-11-29 05:36:17 27 4
gpt4 key购买 nike

我正在构建调查构建系统,但不确定如何最好地存储数据。我可以看到的两个选择是:

  1. 使用序列化数组,或者
  2. 将每个元素作为单独的行存储在相关表中

例如,通过使用第一个,我会将如下内容存储为序列化数组:

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
)

)

)

)

)

)

)

)

我看到的好处是:

  1. 它是中心化的,并且
  2. 使用简单的查询就可以很容易地在脚本中进行编辑,例如:

    UPDATE surveys SET data = '$serialized_array'

我看到的主要缺点是:

  1. 很难在脚本外编辑(例如使用 Navicat 时)

我还听说将数据存储为序列化数组是不好的做法。虽然我猜这完全取决于上下文(或者我从谁那里听到的是错误的)。

通过使用第二个(将每个元素存储为相关表中的单独行),我将拥有这样的数据库结构:

调查

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

我看到的好处是:

  1. 更好地分离内容,并且
  2. 在脚本外编辑更容易(例如使用 Navicat 时)

我看到的主要缺点是:

  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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com