【问题标题】:How to implement MySQL SET concept with over 64 members?如何实现超过 64 个成员的 MySQL SET 概念?
【发布时间】:2013-08-28 11:09:11
【问题描述】:

复制具有超过 64 个成员的 MySQL SET col 类型的行为的最佳方法是什么?

我需要做我自然会用 MySQL SET 做的事情,它有大约 85 个不同的选项。 (限制为 64。)实现此功能的最佳方法是什么?

我查看了this question,它建议使用JOIN,但我的成员只有 6 个字符的字符串,这是创建一个全新的 1-这些成员的列表(我将其称为表 2),然后是 2 个列的第三个表,将表 1(我将在其中创建我的 SET 列)和表 2 中的 id 链接起来?

【问题讨论】:

  • 我对一个集合自然会做的就是规范化它,这样它就不再是一个集合了。这有帮助吗?
  • @Blueberry 在这里也一样。
  • 谢谢你,我只是想得太多了!

标签: mysql


【解决方案1】:

规范化为使用ENUM的第二个表:

从这样的单表设计:

  • ID, ..., Set_Col

对这些:

  • 表1:ID,...
  • 表2:Table1_IDEnum_Col

然后,您可以从 Table1 PK (ID) 与“集合”中的值建立零个或多个关系,“集合”现在不是集合,而是标准化的 ENUM 值。您可以获得SETENUM 的空间优势,SET 的多重性,但您克服了SET 的 64 个成员限制。

【讨论】:

  • 谢谢你,我似乎只是在想整个问题。将在一分钟内接受。
【解决方案2】:

既然你已经有了那些 6 字符的字符串,将来会有一些情况你必须把它们放在一个结果集中,所以我会把它们放在一个单独的表中,并使用“JOIN + 连接表”方法。

如果没有为 set 的元素提供字符串,那么我将在 SQL 中实现一个布尔数组。有多种解决方案可以做到这一点,请查看this SO question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-21
    • 2014-07-15
    • 1970-01-01
    • 2016-01-17
    • 2022-11-02
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多