Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL数据库中构建一组链接在一起的项目?_Mysql_Sql_Database_Database Design_Recursion - Fatal编程技术网

如何在MySQL数据库中构建一组链接在一起的项目?

如何在MySQL数据库中构建一组链接在一起的项目?,mysql,sql,database,database-design,recursion,Mysql,Sql,Database,Database Design,Recursion,我很抱歉我的问题标题含糊不清,但我甚至不知道该怎么称呼我要完成的事情 描述我想要什么的最佳方式是,我希望能够将一组项目链接在一起,然后(可能)递归地找到包含目标项目的任何链中的所有项目。例如,请注意以下链中的项目3: item1 => item2 => item3 => item4 item5 => item3 => item6 item3 => item7 => item8 item3 => item9 => item10 item11 => item12 => item13 =>

我很抱歉我的问题标题含糊不清,但我甚至不知道该怎么称呼我要完成的事情

描述我想要什么的最佳方式是,我希望能够将一组项目链接在一起,然后(可能)递归地找到包含目标项目的任何链中的所有项目。例如,请注意以下链中的项目3:

item1 => item2 => item3 => item4
item5 => item3 => item6  
item3 => item7 => item8  
item3 => item9 => item10  
item11 => item12 => item13 => item3
如果用户要搜索项目3,那么我希望上面的五条链都显示出来。换句话说,我希望能够找到item3的所有后代和祖先,这样我就可以在HTML表中显示数据(或任何最有效的HTML结构)。
让这个问题变得棘手的是(如上所示),任何给定的项目都可能有许多后代和祖先。因此,我不确定MySQL中的常规递归是否有效。
我确实查看了以下SO线程的顶部答案中链接到的两篇文章,但我认为建议的解决方案不适合我所需的数据结构:

有没有办法将此类数据组织到MySQL数据库中,以便通过相当简单和轻量级的查询(即,希望每个项目请求有一个查询),我可以获得我想要的信息和结构?
非常感谢。我有一个建议

将项目存储在以下结构中

+---------+-----------+
|   id    |    item   |
+---------+-----------+
|   1     |   item3   |
+---------+-----------+
并添加以下链接引用

+---------+-----------+------------+
|  itemid |  ancestor | descendant |
+---------+-----------+------------+
|  1      |  3        | 2          |
+---------+-----------+------------+
|  1      |  5        | 7          |
+---------+-----------+------------+
在所有三列上创建索引。这将使您能够添加与在链上显示的次数相同的时间。
您还可以查询特定项目以查找其所有相关链接。

您现在有什么样的结构?您能告诉我这些项目是什么并给出一些上下文吗?@Starx,我没有任何类型的结构,因为我不确定哪种结构最好。老实说,对于DB,我想要实现的可能并不实用。我在考虑一个类似于我链接到的SO线程中链接到的文章中概述的结构,但我认为这些不会真正起作用。@arun,老实说,我认为上下文并不重要,但我想对特定游戏中的所有项目进行DB,并且可以很容易地查找任何给定项与所有连接项之间的关系,如我上面的示例所示。我也考虑过类似的问题,但如果我这样做,我如何能够,例如,如果我不知道有多少代祖先,可以在一个查询中获取所有祖先的祖先?我不是图形数据库专家,但是如果你是开放的,你可以探索像Neo4J或OrientDB这样的东西。