mysql – 设计类别,子类别和相关书籍的数据库
作者:互联网
我知道有几个类似于我要求的问题的答案.但他们的做法看起来并不令人信服.
我的问题是如何构建一个可以拥有书籍的类别的数据库和一个也可以有书籍的子类别?
我已经设计了一个数据库,但我不相信这种方法.如果有经验的人给了我一些建议或改进或完全不同的方法,我真的很感激.
我的表格看起来如何(记住这不是实际的代码)
TABLE Category
ID
user_id -- Foreign key from user
name
TABLE SubCategory
ID
user_id
category_id
name
这本书的表格设计相同.
解决方法:
无论是顶级类别还是子类别,都没有理由为“类别”设置多个表.他们都只是“类别”.
因此,有一个名为“categories”的表,带有parent_id字段:
// categories table
id
name
user_id
parent_id
如果要提取所有顶级类别,只需使用parent_id为null的条件对categories表运行查询.
然后,当您想要提取子类别时,只需针对类别表运行查询,条件为parent_id = 123(或其他).
这不仅可以使一切变得更加清洁,而且还可以在您想要继续添加子子子类别等的情况下进行扩展.
另一种选择是使用CakePHP’s TreeBehavior.
我个人只是使用我上面建议的方式,但可能只是因为我没有花时间真正理解这种行为.
标签:sql,mysql,database-design,database-schema 来源: https://codeday.me/bug/20190722/1505161.html