我有一个php对象数组,我想存储到mysql数据库表中。我能想到的唯一方法就是只有一个表来表示具有唯一id的对象和一个用于存储数组的单独表(可能有一个列array_id和一个object_id)但是检索需要一个我认为可以得到的连接昂贵。有没有更好的办法?我不太关心存储空间或插入时间和检索时间。
我不一定需要这个用于关联数组,但如果解决方案可以,那将是首选。
答案 0 :(得分:2)
在mysql中构建树结构(读作数组)可能会很棘手,但它始终是完成的。几乎所有具有嵌套线程的论坛都有一些存储树结构的机制。正如另一张海报所说,它们不一定非常昂贵。
真正的问题是你想如何使用这些数据。如果您需要能够在树中的各个节点添加/删除数据字段,那么您可以使用两个模型中的一个
1)邻接列表模型
2)修改的预订树遍历算法
(他们听起来很可怕,但我保证这并不坏。)
列出的第一个可能是您将遇到的更常见的,第二个是我已经开始更频繁使用的那个,并且一旦您绕过它就有一些很好的好处。看看这个页面 - 它有关于两者的优秀文章。 http://articles.sitepoint.com/article/hierarchical-data-database
正如另一张海报所说,如果您不需要通过查询更改数据或在文本中搜索,那么使用PHP函数将其存储在单个字段中。
$array = array('something'=>'fun', 'nothing'=>'to do')
$storage_array = serialize($array);
//INSERT INTO DB
//DRAW OUT OF DB
$array = unserialize($row['stored_array']);
Presto-changeo,那个很容易。
答案 1 :(得分:0)
如果您对无法通过SQL搜索数组中的数据感到满意,则可以向表中添加单个列,并将数组序列化到其中。你必须在retreival上反序列化它。
您可以使用JSON / PHP序列化或任何更适合您正在开发的语言。
答案 2 :(得分:0)
联接不必如此昂贵 - 您可以定义索引。