如何在数据库中存储可变长度数组

时间:2017-04-03 18:22:06

标签: php mysql

我正在寻找一种基于另一个表中的一组行保存数据的方法,但我不知道如何设置该字段。想一想类似于使用mysql group_concat的结果作为字段。数据基于唯一组合行,而不是一行或一行。

我需要做的是:

  1. 将数组本身存储在数据库中
  2. 存储有关阵列的相关数据
  3. 检索数组
  4. 使用数组中的数据查找有关数组的数据的能力
  5. 我考虑过的一些选择:

    1. 保存为连接成字符串的有序集。
    2. 保存序列化数组(使用php&#39序列化功能序列化)。
    3. 使用可逆哈希将集合保存为哈希字符串。
    4. 这些选项都不正确所以我来到这里希望有人有更好的答案。

      背景:

      假设我有以下表格:

      users {id, other unimportant fields}
      products {id, other unimportant fields}
      shipments {id, user_id, product_id, date, other unimportant fields}
      

      我想创建一个名为assigned_products的新表,其中指定的产品基于他们过去收到的独特组合产品。所以assigned_products应该是这样的:

      assigned_products {set_of_products_received (array), product_id (data about the array)}
      

      我不知道将set_of_products_received存储在数据库中的好方法。

      使用示例:

      假设我有100个用户获得产品A,100个用户获得产品B,100个用户获得产品A和B.假设我想将产品B提供给每个获得产品A,产品A给每个人的人将产品B和产品C提供给所有获得产品A和B的人。分配的产品表应如下所示:

      +--------------------------+------------+
      | set_of_products_received | product_id |
      +--------------------------+------------+
      | A                        | B          |
      | B                        | A          |
      | A, B                     | C          |
      +--------------------------+------------+
      

      我正在寻找更好的存储方式set_of_products_received

      阅读本文时我意识到它有点难以理解,但我并不知道描述这个问题的适当术语(可能是我找不到解决方案的原因)。我很乐意澄清是否有人有任何问题。

0 个答案:

没有答案