具有多个父级的多对多层次结构 - PHP、MySQL

can*_*era 5 php mysql hierarchy categories

我正在尝试按类别创建技术书籍列表,其中每本书可以属于多个类别,并且每个类别既可以是父类别,也可以是子类别。

这是一个例子:

JavaScript
JavaScript 模式
面向对象的 JavaScript

  • Ajax
    Ajax 权威指南
    Bulletproof Ajax

  • jQuery
    学习 jQuery 1.3
    PHP jQuery 食谱

PHP
PHP 简而言之
PHP jQuery 食谱

Ajax
Ajax 权威指南
Bulletproof Ajax

  • XML
    XML Hacks
    严肃的 XML

--

如你看到的...

  • 《PHP jQuery Cookbook》这本书属于两类:PHP 和 jQuery
  • 类别“Ajax”既是 JavaScript 的子级,又是 XML 的父级(但 XML 不是 JavaScript 的子级)

我这样设计数据库表:

BOOK:          book_id, book_title  
CATEGORY:      category_id, category_name  
BOOK_CATEGORY: book_id, category_id
CATEGORY_TREE: parent_category_id, child_category_id
Run Code Online (Sandbox Code Playgroud)

我读过许多有关 MySQL 中分层数据的其他问题/答案,但没有任何内容可以处理这种类型的“松散”层次结构。

有谁知道如何以这种方式设置列表?

Hal*_*yon 1

如果您的数据集很小(<10000),那么您只需在 4 SELECT all 查询中获取所有数据,并在 PHP 中执行所有类别/子类别计算。

树和关系数据库不能很好地结合在一起:)