我知道有几个答案类似于我所问的几个问题。但是他们的方法看起来并不令人信服。
我的问题是我如何为可以拥有书籍的类别和也可以拥有书籍的子类别构建数据库?
我已经设计了一个数据库,但是不相信这种方法。因此,如果有经验的家伙给我一些建议,改进或完全不同的方法,我将不胜感激。
这就是我的表格的样子(请记住,这不是实际的代码)
TABLE Category ID user_id -- Foreign key from user name TABLE SubCategory ID user_id category_id name
本书的桌子采用相同的设计。
无论是顶级类别还是子类别,都没有理由为一张以上的“类别”使用多个表格。它们都只是“类别”。
因此,有一个称为“类别”的表,其中包含一个parent_id字段:
parent_id
// categories table id name user_id parent_id
如果要提取所有顶级类别,只需对categories表运行查询,条件parent_id为空。
categories
然后,当您要提取子类别时,只需categories使用条件parent_id = 123 (或其他条件)对表运行查询。
parent_id = 123
这样不仅可以使所有内容保持整洁,而且还可以扩展,以防您要继续添加子子子子类…等。
另一个选择是使用CakePHP的TreeBehavior。
我个人只是使用我上面建议的方式,但是可能只是因为我没有花时间真正地理解这种行为。