【发布时间】:2021-05-17 18:17:53
【问题描述】:
我有一些数据想存储在表格中。此数据是具有id(字符串)和名为source(字符串)的属性的项目列表。我想做的方式是制作一个表A,它有两列:source(varchar)和items(set)。假设每个来源有 20 个项目,总共有 200 个项目。如果我想这样做,我将无法使用 SET 来执行此操作,因为它有 64 个值的限制,因此在创建表时我将无法指定项目的所有可用选项。
既然我们在上下文中,我想出了两个选项:
-
按照我需要的相同结构创建尽可能多的表,每个表有 64 个值(T1:1-64、T2:65-128 等)——我认为这不是一个很好的选择,但它是一个选项。
-
不要使用集合,而是创建与项目一样多的行,即列
source(varchar) 和id(varchar) -- 另一个我不太喜欢的选项,因为我需要创建很多行,每当我需要提出请求时,它可能需要遍历整个表。不过还是比选项 1 好。
有没有什么方法可以通过更简洁(而且计算成本更低)的解决方案来实现这一目标? 谢谢。
【问题讨论】:
-
您提到了 MySQL,所以大概您正在考虑使用关系数据库。如果是这样,那么您的选择仅限于 1:标准化。
-
共有 200 项。如果我想这样做,我将无法使用 SET 来执行此操作,因为它有 64 个值的限制,因此在创建表时我将无法指定项目的所有可用选项。 在表中使用 4 列 SET 类型。或者使用一个 BINARY(32) 列。
-
@Akina 这实际上是我没有想到的,听起来不错,但问题是项目的数量可能会增加,如果达到 257,我需要手动创建一个列和设置值。好的方法,谢谢!