gpt4 book ai didi

database - 如何表示数据库中两个项目之间的关系?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:07 28 4
gpt4 key购买 nike

我和我的同事正在开发一个与 Stackoverflow 想法相似的网站,但用于提交任务(以及供内部使用)。今天早上我们讨论了标记任务,但无法真正确定哪个选项最快,或者我们是否没有遗漏任何东西。

让我们想象一下带有标签的表格,它会根据用户动态更新。用户可以创建任何标签并将它们添加到该表中。结构如下:

  • 身份证
  • 姓名
  • 计数

我现在进入正题。例如,如果您单击标记“PHP”,它会向您显示另一个页面,其中包含所有标记为“PHP”的任务。类似于 this page 的东西.重要的是这个相关标签列表。如何在数据库中表示?

我们想到了两个选项,但我认为实际上没有一个是最有效的。

  1. 选择带有“PHP”标签的所有任务并检查它们包含的其他标签。几年后我们可能会从服务器上得到答案。

  2. 用cols tagrelated tagcount制作一个表格,其中包含所有可能的标签关系。我们看到的唯一问题是口是心非。我们可以有标签 PHP 和相关标签 DB2,但我们也可以有标签 DB2 和相关标签 PHP,这当然是相同的关系,具有相同的计数。

我实际上非常喜欢选项 #2,但没有口是心非。也许在标签之间没有如此密切关系的选项(好像没有任何“主要”和“次要”标签)可能效果最好。在这一点上,我真的不是很确定,我不想建模一些将来不会工作的东西,或者如果有一百万个标签的话会太慢。

我们将使用 PHP 和 mySQL 或 DB2,但我想这并不重要。

因此,实际问题是:是否还有其他可能更好的选择?如有任何问题,请问我。

提前致谢。

最佳答案

我假设您这样做是因为希望“显示与‘标签’相关的前 N ​​个标签”查询非常快。

如果您在数据库中执行此操作,那么您的第二种方法是最好的。您甚至可以考虑创建一个在标签字段上升序并在相关标签计数字段上降序的索引。

但如果您真的想要速度,请考虑将其表示为内存中的数据结构。

关于database - 如何表示数据库中两个项目之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2040839/

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