【问题标题】:Should Database Data Be Serialized?数据库数据应该序列化吗?
【发布时间】:2011-06-12 14:59:04
【问题描述】:

我知道 PHP 序列化的工作原理和方式。但我想知道存储在数据库中时应该序列化哪种类型的数据/结构。

我正在用 PHP 构建一种地址簿系统,其字段如下:

姓名、名字、街道、城市、邮编等

我可以序列化我的数据以将其存储在我的数据库中,或者为每个项目存储不同的字段。

任何提示、建议、想法?

【问题讨论】:

  • 1/4 并非必然不可接受,尤其是因为 1 个问题只有 1 个答案且得分为 -1,而另一个问题也只有 1 个答案。要点:不要妄下结论。
  • @JP19:应该牢记这一点,但在发表评论之前我确实看过他的问题,并且至少有两个答案需要接受(五个答案中)。但同意,不应贸然下结论。

标签: php database serialization


【解决方案1】:

如果我理解正确,您的犹豫不决是是否序列化包含所有字段的对象或数组并将结果存储在数据库中,或者是否将每个字段单独存储在表列中。

如果没有特殊情况,我建议你做后者。它将允许您在数据库中更有效地搜索、排序、交叉引用等。

序列化在传输数据或保存复杂对象图以保存部分脚本状态时更常见,而不是在数据库中存储数据。

【讨论】:

    【解决方案2】:

    我会选择数据库,并将姓名、名字、街道等存储在数据库表的单独列中。这种情况下就不需要使用序列化了……

    这是可以从序列化中受益的情况...

    想象一下,您正在使用一些很酷的产品创建 eshop。这些产品具有颜色等属性......“产品有这些颜色......”
    您不知道 eshop 管理员会为这些产品存储多少种颜色...

    所以现在,序列化来了……
    管理员在将产品导入数据库时​​可以根据需要添加任意数量的颜色...您的脚本只需将 $colors 数组序列化为字符串,然后将序列化数组(->字符串)存储在单个“颜色”列下的数据库表中...
    从数据库中检索数据时,您只需反序列化此序列化字符串...

    我希望我已经用有意义的方式向你解释了我的想法:)

    【讨论】:

      【解决方案3】:

      如果您需要按其中一个字段(姓名、名字、街道、城市、邮编...)进行搜索,那么您应该为每个字段创建不同的列。但我不知道你为什么要序列化数据只是为了插入数据库。在两种情况下,硬盘占用的空间几乎相同。

      【讨论】:

        【解决方案4】:

        一个例子:如果你使用 Curl 作为中继代理,并且想要传递 POST 数组变量,你需要使用 php 序列化(或等效),因为 curl cannot post array variables

        【讨论】:

          【解决方案5】:

          对于一致的数据,将字段存储在各自的列中。这样你就可以搜索/订购/等。那些领域。数据库存储很少需要序列化。当您需要将数据/对象存储在文本文件中或其他需要字符串形式的地方时,通常会使用它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-10-30
            • 2020-05-08
            • 1970-01-01
            • 2011-10-12
            • 1970-01-01
            • 2011-02-06
            • 1970-01-01
            • 2020-01-05
            相关资源
            最近更新 更多