0

我需要将一组数据保存到 MySQL。但是数组的长度不是固定的。

该数组可能类似于:

array(key1 => value1)

或喜欢

array(key1 => value1, key2=> value2)

等等。

如果它是一个固定长度的数组,那么 JOIN 可以解决这个问题。我正在考虑将其保存为 JSON 字符串

数据表如下:

id -- context -- content (JSON Str)

这是一个好主意吗?有没有更好的方法来做到这一点?
谢谢

4

4 回答 4

3

您可能需要考虑一个单独的表,这样以后查询起来会容易得多。

data [table]
- id
- context

data_items [table]
- data_id [foreign_key]
- key
- value

在数组中插入尽可能多的 data_items 记录,链接到一个数据记录。

于 2013-03-28T00:25:39.227 回答
1

是的,将数组数据存储在 JSON 中是个好主意。序列化更便携,并且根据我的经验,它更擅长处理 UTF-8 字符。

FTR 我通常尽量不在数据库中存储大量“内容”数据,而是选择像 MongoDB 这样的针/干草堆文件存储。

于 2013-03-28T00:25:08.807 回答
1

如果您确实知道不需要访问 json 字符串中的任何数据,并且您永远不会尝试根据此信息访问任何行,那么将其存储为 json 字符串可能会起作用。

通常使用第二个表来规范化数据是一个更好的主意。或者切换到 NOSQL 数据库解决方案。

于 2013-03-28T00:25:20.003 回答
1

您当然可以以 PHP 的序列化格式或 JSON 等序列化格式存储序列化数据。我唯一的问题是您是否需要访问此序列化数组中的任何数据(即查询此数据)。如果您总是要查询某种 id,这应该可以正常工作。但是,如果您需要实际处理数据库中的数据,您可能需要考虑使用 NoSQL 解决方案来处理非结构化数据。

于 2013-03-28T00:27:09.713 回答