【问题标题】:Optimal Way to Store/Retrieve Array in Table在表中存储/检索数组的最佳方式
【发布时间】:2009-04-17 16:37:04
【问题描述】:

我目前在 MySQL 中有一个可以正常存储值的表,但我想在该表中添加一个字段来存储值数组,例如城市。我应该将该数组简单地存储为 CSV 吗?每行都需要它自己的数组,所以我对创建一个新表并为插入前一个表的每一行插入 2-5 行感到不安。

我觉得这种情况应该有个名字,就是想不起来:)

编辑

元素数量 - 2-5(从动态城市列表中选择,数组引用列表,即表格)

此字段无需可搜索,只需与其他数据一起检索即可。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    “正确”的方法是使用另一个表来保存每个值,但由于您不想走这条路线,因此分隔列表应该可以工作。只需确保您选择了一个不会出现在数据中的分隔符。您还可以将数据存储为 XML,具体取决于您计划与数据交互的方式,这可能是更好的方法。

    【讨论】:

    • 如果您致力于在文本字段中存储数据并且正在考虑使用 XML,那么您至少可以通过给 YAML 略过一瞥来为自己提供服务。我很快就成为了一名皈依者。
    • 这不一定是正确/错误的事情,我正在尝试找出存储/检索此信息的最佳方式。
    【解决方案2】:

    我会采用包含逗号(或其他逻辑分隔符)分隔值的字段的想法。只需确保您的字段足够大以容纳最大数组大小。然后,当您拉出该字段时,应该很容易使用您的分隔符对长字符串执行explode(),然后它将立即在代码中填充您的数组。

    【讨论】:

      【解决方案3】:

      也许您正在寻找的词是“规范化”。如,将数组移动到单独的表中,通过键链接到第一个表。这提供了几个优点:

      • 数组大小几乎可以无限增长

      • 高效存储

      • 能够在数组中搜索值而无需使用“like”

      当然,是否对这些数据进行归一化的决定取决于很多你没有提到的因素,比如元素的数量,数量是否固定,元素是否需要可搜索等等。

      【讨论】:

        【解决方案4】:

        你的应用程序是 PHP 的吗? serializeunserialize 函数可能值得研究。

        这两个函数使您可以轻松地将数组存储在数据库中,然后在以后重新创建该数组。

        【讨论】:

          【解决方案5】:

          正如其他人所提到的,另一张桌子是正确的方法。

          但如果您真的不想这样做(?),假设您使用 PHP 和 MySQL,为什么不使用 serialize() 并存储一个序列化值?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多