整个JSON VS.行和列(数据库)

时间:2015-01-30 15:21:15

标签: php mysql json

我有一个我编码的JSON列表,如下所示:

enter image description here

注意:图片只是其中的一部分,而不是全部。

解码后,它看起来像这样:

enter image description here

注意:图片只是其中的一部分,而不是全部。

我想将这些数据添加到我的数据库中,我不确定解决此问题的最佳方法是什么。我现在有两种方式思考:

  1. 将整个JSON插入我的数据库

    • 如果我选择这样做,它会在复杂性或性能方面产生什么影响吗?这不好吗?
  2. 在我的数据库中创建一个与JSON中的数据匹配的表

    • 遍历所有这些并插入每个。
    • 这是一个更多的工作,我希望它更好。
  3. 有人想对此提出一些意见吗?感谢。

4 个答案:

答案 0 :(得分:1)

这实际上取决于您将如何处理这些数据。您将如何查询它,以及是否要编辑数据。 如果要按其属性查询此数据,则应维护具有匹配列的表。

我刚刚意识到,如果不是保存第一个列表中包含名称的列表列表,而是保存一个对象列表,那么您的JSON可能会更有用。

[{"id":1234,"name":"somename"},{"id":567,"name":"somothername"} ]

答案 1 :(得分:1)

我认为这两种方法都有效,具体取决于您接下来要对该数据做些什么。

如果您计划仅在客户端使用此数据(javascript),那么将json存储在数据库中并不是一个坏主意。您可以将其存储在类型为“text”的列中,将另一列存储为id,以便以某种方式标识您的不同jsons。

另一方面,如果您计划在服务器端处理此数据(例如php),我认为最好将其存储为普通的关系数据库(表,列和行)。通过处理数据,我的意思是:例如:对它进行排序,对其进行分组,或只检索部分数据等。

希望它有所帮助。

答案 2 :(得分:1)

如果您只需要将数据存储在数据库中,则第一个选项是可以的。例如,您无法搜索名为"安装修复"

的项目

如果您想对这些数据执行某些操作(选择,更新等),第二种方法会好得多。

答案 3 :(得分:1)

您没有说这些数据的来源。但它显然是普通RDMS表的JSON表示。第一个数组元素是列名列表,后续列是这些列中的行。在某些行中,您有一些缺少的列。

制作这种数据格式的人似乎受到RDMS(MySQL等)设计的影响。将它存储在表中可能是明智之举。如果你这样做,你将拥有SQL的权限来访问和报告它,例如,

SELECT COUNT(*), itemName, salesDescription
  FROM table
 WHERE isActive = 'Y'
 GROUP BY itemName, salesDescription

将总结您拥有的物品类型和数量。

(当然,你也可以从MongoDB获得这种力量。)

这是一个QuickBooks导出,你在评论中说。 QB在封面下使用RDMS,因此其数据以表和行为导向,如此示例所示。如果这是我的项目,我将从QB导出CSV文件,然后直接将其加载到RDMS中,而不会使用JSON。