gpt4 book ai didi

mysql - 如何在数据库上存储带有订购项目的 list

转载 作者:行者123 更新时间:2023-11-30 21:44:17 25 4
gpt4 key购买 nike

我需要在 MySql 数据库中存储一些 list 。事实证明它比预期的要棘手:

  • 有一个适用于一切的“主” list
  • 每个端口都将引用主要 list ,但在特定位置散布额外项目

我最初的想法是有一个包含字段的checklists表:

  • 编号
  • 描述
  • portId(如果是“一般” list 中的项目则为 null)
  • 职位

在这里,“主” list 是将“portId”设置为空的项目,特定端口 list 是将 portId 设置为某项的项目。然而,排序东西充其量是棘手的:“位置”参数是模棱两可的,因为它可能指的是端口特定列表的位置,但重新排序“主要”(非端口)项目会把事情搞得一团糟。

另一种选择是链表:

  • 编号
  • 描述
  • portId(如果是“一般” list 中的项目则为 null)
  • previousId

这意味着每个项目都知道谁是“ parent ”。这似乎是完美的解决方案。然而......查询有一个问题:如何编写查询以使项目以正确的顺序出现? (也就是说,首先是没有任何 id 的那个,然后是第一个以第一个记录为父亲的项目,依此类推)。另外,如果出现任何问题,我担心会破坏链表。

是否有针对此类问题的“最佳实践”?

最佳答案

答案如此简单,令人唏嘘。我从错误的角度解决问题,然后陷入困境。与其将问题视为“单独的 list 然后合并”,不如将其视为“一个大的 list ,其中的项目可能被过滤掉”。

这样,我可以简单地应用通常的“定义记录顺序的每个字段一个权重”(当您有一个有序集时总是这样做);然后,我将简单地“过滤掉”一些不适用的字段。过滤可以通过多种方式进行,但这超出了我的问题范围。

一旦从正确的角度面对问题,事情就会变得非常简单明了。

关于mysql - 如何在数据库上存储带有订购项目的 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50145792/

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