gpt4 book ai didi

mysql - 是否有一种算法可以将数字组合转换为一个数字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:23 24 4
gpt4 key购买 nike

我正在开发一个类似调查的应用程序。对于选择题,我想将项目的组合存储在一个数字中,以便将其存储在一行中。

所以问题的数据库结构是这样的:

id    type                 text                      item_id
-- --------------- --------------------------- -------
1 multiple_choice which one would you choose? 42
1 multiple_choice which one would you choose? 43
1 multiple_choice which one would you choose? 46

这是一个有 3 个选项的问题,选项将从另一个表 items 中调用,id 为 42,43,46

所以我想把这个组合变成一个数字来实现:

id    type                 text                      items
-- --------------- --------------------------- -------
1 multiple_choice which one would you choose? x*
  • x 应该是一个数字,表明它是从数字 42,43,46 派生的

所以在数学上它会是这样的

f({42,43,46}) = x   and   f^-1(x)={42,43,46}

解决这个问题的一种方法可能是使用质数作为项目 ID。所以它们的乘法是唯一的,但是有没有办法对所有数字都这样做?

提前致谢。

最佳答案

不,不,不。这不是您想要在关系数据库中执行的操作。

questions 的原始表格更接近正确的方法。

如果您想获得所有可能的答案,只需执行以下查询:

select id, type, text, group_concat(item_id)
from questions q
group by id, type, text;

但是,您真正应该拥有的是两个表(至少)。列出每个问题并具有以下列的问题:

  • question_id
  • 输入
  • 正文

每个问题 1 行(即,question_id 是主键)。

还有第二个表question_items,列如下:

  • question_items_id
  • question_id
  • 有关该项目的更多信息

使用这种格式,上面的查询更像是:

select q.question_id, q.type, q.text, group_concat(qi.question_item_id)
from questions q join
question_items qi
on q.question_id = qi.question_id
group by q.question_id, q.type, q.text;

虽然查询可能看起来有点复杂,但底层数据结构更能代表您的问题领域。这使得整个系统更加健壮和可维护。

关于mysql - 是否有一种算法可以将数字组合转换为一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com