数据库数据应该序列化吗?

时间:2011-01-20 17:11:04

标签: php database serialization

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

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

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

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

任何提示,建议,想法?

5 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

我会去数据库,我会在DB表的不同列中存储Name,Firstname,Street等。在这种情况下无需使用序列化......

这种情况将受益于序列化......

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

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

我希望我以有意义的方式向你解释我的想法:)

答案 3 :(得分:1)

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

答案 4 :(得分:0)

如果您需要搜索其中一个字段(名称,名字,街道,城市,邮编......),则应为每个字段设置不同的列。但我不知道你为什么要序列化数据只是为了插入数据库。在两种情况下,HDD上占用的空间几乎相同。