我需要将一组数据保存到MySQL。但是数组的长度不固定。
数组可能是这样的:
array(key1 => value1)
或喜欢
array(key1 => value1, key2=> value2)
等等。
如果它是一个固定长度的数组,那么JOIN可以解决问题。 我正在考虑将其保存为JSON字符串
数据表就像:
id -- context -- content (JSON Str)
这是个好主意吗?有没有更好的方法来做到这一点?
谢谢
答案 0 :(得分:3)
您可能需要考虑一个单独的表,稍后可以更容易查询。
data [table]
- id
- context
data_items [table]
- data_id [foreign_key]
- key
- value
在数组中插入尽可能多的data_items记录,并链接到一个数据记录。
答案 1 :(得分:1)
是的,最好将数组数据存储在JSON中。序列化更加便携,而且根据我的经验,它更好地处理UTF-8字符。
FTR我通常不会在数据库中存储大量的“内容”数据,而是选择像MongoDB这样的针/ haystack文件存储。
答案 2 :(得分:1)
如果您确实知道您不需要访问json字符串中的任何数据,并且您将永远不会尝试根据此信息访问任何行,那么将其存储为json字符串可能会有效。
通常使用第二个表来规范化数据是个更好的主意。或者切换到NOSQL数据库解决方案。
答案 3 :(得分:1)
您当然可以以序列化格式存储序列化数据,如PHP的序列化格式或JSON。我唯一的问题是你是否需要访问这个序列化数组中的任何数据(即查询这些数据)。如果你总是要查询某种类型的id,这应该可以正常工作。但是,如果您需要在数据库中实际使用该数据,则可能需要考虑使用NoSQL解决方案来处理非结构化数据。