小编典典

类别,子类别和相关书籍的设计数据库

sql

我知道有几个答案类似于我所问的几个问题。但是他们的方法看起来并不令人信服。

我的问题是我如何为可以拥有书籍的类别和也可以拥有书籍的子类别构建数据库?

我已经设计了一个数据库,但是不相信这种方法。因此,如果有经验的家伙给我一些建议,改进或完全不同的方法,我将不胜感激。

这就是我的表格的样子(请记住,这不是实际的代码)

TABLE Category
    ID
    user_id -- Foreign key from user
    name

TABLE SubCategory
    ID
    user_id
    category_id
    name

本书的桌子采用相同的设计。


阅读 250

收藏
2021-03-23

共1个答案

小编典典

无论是顶级类别还是子类别,都没有理由为一张以上的“类别”使用多个表格。它们都只是“类别”。

因此,有一个称为“类别”的表,其中包含一个parent_id字段:

// categories table
id
name
user_id
parent_id

如果要提取所有顶级类别,只需对categories表运行查询,条件parent_id为空。

然后,当您要提取子类别时,只需categories使用条件parent_id = 123 (或其他条件)对表运行查询。

这样不仅可以使所有内容保持整洁,而且还可以扩展,以防您要继续添加子子子子类…等。


另一个选择是使用CakePHP的TreeBehavior

我个人只是使​​用我上面建议的方式,但是可能只是因为我没有花时间真正地理解这种行为。

2021-03-23