我想知道在数据库中存储数组是否真的是好的做法?我倾向于使用json_encode
而不是serialize
,但只是想知道这是否是一个好主意。如果没有,那么我可以做一些小的更改,然后用逗号将数组内爆。
不,这是一种可怕的做法。请不要插入 CSV、JSON*、serialize()
或任何类型的序列化数据关系型的数据库。非规范化几乎总是一个坏主意——除非你真的知道自己在做什么,否则不要这样做,否则你会开始问
诸如此类的问题:this https://stackoverflow.com/questions/7363000/oracle-sql-getting-the-nth-element-regexp, this https://stackoverflow.com/questions/7269882/unserialize-value-of-database-and-putting-it-in-json-encode-after-foreach, this https://stackoverflow.com/questions/7201158/join-tables-with-comma-values, this https://stackoverflow.com/questions/7212282/is-it-possible-to-query-a-comma-separated-column-for-a-specific-value, ...
这样做,你就会失败或者严重阻碍你的能力:
- Use
JOIN
s.
- 查找或修改特定元素
- 强制引用完整性
- 从索引使用中获益
- 而且还浪费空间
这可能听起来很迂腐,但看到人们这样做是我最讨厌的事情之一——特别是考虑到 SO 上提出的大量问题,如果他们做得正确的话,这些问题是可以避免的。
Here's 正确的方式 https://stackoverflow.com/questions/7296846/how-to-implement-one-to-one-one-to-many-and-many-to-many-relationships-while-des/7296873#7296873在 RDBMS 中建立一对多和多对多关系。
*Although some SQL databases have built-in support for JSON, it's often better to restructure your data so that you don't need this
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)