我正在尝试按类别创建技术书籍列表,其中每本书可以属于多个类别,每个类别可以是父类别和子类别。
以下是插图:
的JavaScript
JavaScript模式
面向对象的JavaScript
的Ajax
Ajax权威指南
防弹Ajax
的jQuery
学习jQuery 1.3
PHP jQuery Cookbook
PHP
PHP in a Nutshell
PHP jQuery Cookbook
的Ajax
Ajax权威指南
防弹Ajax
-
正如你所看到的......
我用这种方式设计了数据库表:
BOOK: book_id, book_title
CATEGORY: category_id, category_name
BOOK_CATEGORY: book_id, category_id
CATEGORY_TREE: parent_category_id, child_category_id
我已经在MySQL中阅读了许多关于分层数据的其他问题/答案,但没有任何东西可以处理这种“松散”的层次结构。
有谁知道如何以这种方式设置列表?
答案 0 :(得分:3)
假设您的类别不能形成周期,例如a-> b-> c-> a,您的结构称为有向非循环图,这在SQL中不易处理,但可能。谷歌搜索应该给出一些结果,你也可以从这里开始: http://www.codeproject.com/KB/database/Modeling_DAGs_on_SQL_DBs.aspx
答案 1 :(得分:0)
如果您的数据集很小(<10000),那么您只需获取4 SELECT所有查询中的所有数据,并在PHP中执行所有类别/子类别计算。
树和关系数据库不能很好地结合在一起:)
答案 2 :(得分:0)
使用php完成所有操作,创建一个包含在页面中的函数,这样如果有任何改变,你不必更新表,只需要包含该函数的文件。
答案 3 :(得分:0)
我会创建
books (book_id, category_id)
categories (category_id, parent_category_id, category_name, category_level)
其中category.parent_category_id
可以是NULL
。如果是NULL
,则category_level
将为0(1,无论您想要什么)。