【问题标题】:PHP/MYSQL How do you store a multidimensional array in a database - json or another table?PHP/MYSQL 如何在数据库中存储多维数组 - json 或另一个表?
【发布时间】:2016-01-10 18:59:46
【问题描述】:

我目前正在开发一个需要在数据库中存储多维数组的应用程序。目前我正在使用 3 层深的数组,可以是任何大小,因为它填充了用户生成的信息,并使用 json_encode() 将其转换为 string 并将其输入数据库。
问题在于单个字段非常大且难以读取,要更新数据,我必须检索数据、解码、更新、编码并重新上传。如果该网站确实被许多人使用,我不知道这将如何扩展。
我认为主要的替代方法是创建另一个表,每一行都由存储在主表中的唯一 id 访问,但我再次不确定这将如何扩展
哪个更好?非常感谢任何帮助:)

【问题讨论】:

  • 如果该字符串不需要与其他字符串进行询问/分析/比较,则照常进行。否则,请参阅规范化
  • 关于 MySQL,不要考虑数组或维度。在关系中思考!
  • the main alternative would be to create another table, with each row accessed by a unique id stored in the main table 这就是 db 将如何存储您的 json TEXT/BLOB 的有效方式——该表只有一个指向实际存储值的位置的指针。在这两种选择中,让数据库来做。你没有说数据是什么,或者你如何使用它,你可以考虑将数据存储在其他地方(甚至是文件中)。请注意,问题中缺乏细节反映在您收到的答案含糊不清。

标签: php mysql json database multidimensional-array


【解决方案1】:

我认为,如果您不确定您的阵列可以有多深,那么您构建一个结构良好的数据库会有点困难,所以请按照您的计划进行。我建议尽可能多地使用函数

编码函数解码函数用于json数据(任何层),并使用这些函数并执行更新。

使用单独的函数显然会美化您的项目,并且代码不会混乱。

【讨论】:

    【解决方案2】:

    创建多个数据库表和这些表之间的关系以将您的数据组合在一起可能会更容易维护,并使您能够根据列查询/过滤结果,而不必检索数据、对其进行解码和迭代它在 PHP 中。

    【讨论】:

      【解决方案3】:

      如果你不确定你的数组有多少层,那么设计数据库模式真的很难。所以最好的存储方式是在你已经在做的文本字段中。

      至于缩放涉及正确的索引和分区以及缩放应用程序,但是具有大文本值的一个字段与缩放无关。

      【讨论】:

        猜你喜欢
        • 2011-09-12
        • 2017-11-12
        • 2011-10-23
        • 2017-11-16
        • 2017-11-12
        • 1970-01-01
        • 2010-12-19
        • 2018-02-21
        • 1970-01-01
        相关资源
        最近更新 更多