类别和子类别

时间:2015-11-09 16:48:26

标签: mysql sql database database-design

我有一份文章清单,这些文章属于各种类别。

有时类别会有子类别,点击该类别将显示该类别的所有子标题文章,点击子类别将仅显示子类别的所有文章。

我无法弄清楚架构。

文章

id | title | article | category_id

分类

id | title
  1. 如何在类别表中表示子类别?

  2. 如何整理数据,以便轻松获取属于某个类别的所有文章,并获取属于子类别的文章?

1 个答案:

答案 0 :(得分:1)

通常,您会在类别表中引入parent_category_id列,该列将类别和子类别链接在一起。

当然,您必须小心不要将类别链接到自身,如果您有多个子类别级别,那么您希望避免出现循环。

您可以通过id和parent_category_id之间的类别的自联接提取子类别,然后加入文章表。

如果您有可以加入类别或子类别的文章,那么:

(select id from category where id = 3
 union all
 select id from category where parent_category_id = 3)

...为您提供一组类别ID,您可以加入这些类别ID以查找完整的文章集。