首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在mySQL表中表示树结构

如何在mySQL表中表示树结构
EN

Stack Overflow用户
提问于 2013-05-22 16:52:10
回答 3查看 25.5K关注 0票数 7

这棵树具有以下特点:

  1. 每个节点可以有多个父节点和多个子节点。
  2. 节点的父节点可以具有不同的深度。

示例

我试图代表一个类别结构,如下所示:

桌面和移动应用程序

桌面和移动应用程序->Android应用程序

桌面和移动应用->Android应用->游戏

桌面和移动应用->Android应用->游戏->行动

桌面和移动应用->小游戏

桌面和移动应用->游戏->行动

桌面和移动应用->游戏->冒险

桌面应用程序

桌面应用->小游戏

桌面应用->游戏->动作

桌面应用->游戏->冒险

IPhone Applications

桌面应用->小游戏

桌面应用->游戏->动作

桌面应用->游戏->冒险

尝试使用嵌套集算法,我最终得到了多个具有不同类别I和不同深度的“游戏”类别。

在这方面的任何帮助将是非常感谢的。

EN

回答 3

Stack Overflow用户

发布于 2013-05-22 17:00:25

简单的方法是构造如下的表:

类别

CategoryID

ParentID

名字

您的数据看起来应该是:

1,0,“桌面和移动应用程序”

2,1,“Android应用程序”

3,2,“游戏”

4,3,“行动”

5,1,“游戏”

6,5,“行动”

7,5,“冒险”

8,0,“桌面应用程序”

9,8,“游戏”

您可以这样查询:select * from Categories where ParentId = 1,它将返回Android和Games。要获得游戏的子类别,您可以执行select * from Categories where ParentId = 5,这将返回动作和冒险。

为了将单个项目与多个类别关联起来,需要一个额外的表:更新

xref_CategoriesItems

CategoryId

ItemId

这将允许任何单个项目与多个类别相关联。假设您有一个桌面应用程序,需要同时出现在桌面应用程序>游戏和桌面和移动应用程序>游戏中。

您的表将有关于第1项的下列数据:

3,1

9,1

当查看特定类别中的项目时,您将执行以下操作:

代码语言:javascript
运行
复制
select I.*
  from items I
    inner join xref_CategoriesItems XCI on (XCI.ItemId = I.ItemID)
  WHERE (XCI.Category = @CategoryId)

若要查看特定项目属于哪些类别,请执行以下操作:

代码语言:javascript
运行
复制
select C.*
  from categories C
    inner join xref_CategoriesItems XCI on (XCI.CategoryId = C.CategoryId)
  where (XCI.ItemId = @ItemId)

如果需要所有子记录,则对特定类别下的所有项的查询要复杂一些。基本上,您需要使用类别进行递归连接xref_categories,以获得子类别。我不记得如何在MySQL版本的sql中表达这一点;但是,了解以下几点可能更好:使用MySQL查询遍历行以生成递归树

票数 2
EN

Stack Overflow用户

发布于 2013-05-22 17:44:12

你想要的不是一棵树,而是一张图。特别是有向无圈图(DAG)。这里 --这是一个关于在关系数据库中存储DAG的链接。

使用传统的类别树结构可能更容易,并允许项目在项目/类别链接表的帮助下处于多个类别中。

票数 0
EN

Stack Overflow用户

发布于 2013-05-22 18:10:52

另一种方法是在存储的任何项目上使用标记,而不是类别。从您给出的示例来看,这可能更合适--而不是“桌面和移动应用程序”、“桌面应用程序”和“移动应用程序”,而是使用“桌面”和“移动”标记。然后,一个两者兼备的项目自然属于第一类。

参考文献:如何将标签存储在MySQL标签中,总字段还是每个标签的一个字段?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16697446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档