2

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

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

我看过这个问题,它建议 a JOIN,但我的成员只有 6 个字符的字符串,是真正创建这些成员的全新 1 列表的最有效方法(我将其称为表 2) ,然后是 2 个列的第三个表,将表 1(我将在其中创建SET列)和表 2中的 id 链接起来?

4

2 回答 2

2

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

从这样的单表设计:

  • ID, ...,Set_Col

对这些:

  • 表 1: ID, ...
  • Table1_ID表2:,Enum_Col

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

于 2013-08-28T11:17:02.993 回答
0

由于您已经有了这些 6 个字符的字符串,因此将来会出现必须将它们放入结果集中的情况,因此我会将它们放入单独的表中并使用“JOIN + 连接表”的方法。

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

于 2013-08-28T11:18:05.717 回答