我想知道将数组存储在数据库中是否真的是一种好习惯?我倾向于使用 json_encode
而不是 serialize
,但只是想知道这是否是个好主意。如果没有,那么我可以做一些小改动,然后用逗号内爆数组。
最佳答案
不,这是一种糟糕的做法。请避免在关系数据库中插入 CSV、JSON*、serialize()
或任何类型的序列化数据。非规范化几乎总是一个坏主意——除非你真的知道自己在做什么,否则不要这样做,否则你会开始问
类似问题:this , this , this , this , ...
这样做,您将失去或严重阻碍您的能力:
- 使用
JOIN
。 - 查找或修改特定元素
- 实现参照完整性
- 从索引使用中获益
- 而且还浪费空间
这听起来可能有点学究气,但看到人们这样做是我最讨厌的事情之一 - 特别是考虑到在 SO 上提出的过多问题,如果他们采取正确的方式,这些问题是可以避免的。
这是 the right way在 RDBMS 中建立一对多和多对多关系。
*虽然一些 SQL 数据库内置了对 JSON 的支持,但通常最好重组数据,这样您就不需要它了
关于php - 在数据库中存储数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7364803/