我正在研究一种数据库设计,该设计允许产品属于 1 个或多个类别。类别可以是父子关系。这是我到目前为止所拥有的:
==================
product
==================
product_id
name
==================
category
==================
category_id
parent_category_id
level
name
==================
product_category
==================
product_id
category_id (leaf node only)
问题
- 设计好看吗?
- 我只关心product_category->category_id中的叶节点对吗? (我想我可以使用这些信息从叶节点一直到根节点)
- 给定一个产品,我如何获取该产品所属的类别树?
- 给定一个类别(类别树中的任何级别),我如何获取该类别下分类的产品数量?
- 我还有其他问题需要调查吗?
最佳答案
您所呈现的内容看起来像是数据库中树的正确设计。但是,您的查询可能会变得复杂,您可能会发现自己需要对某些任务进行多次查询,例如遍历深度时每个级别都有一个查询。
但是,数据库中还存在一种完全不同的树实现方法。这有点违反直觉,但是当您了解查询简单性的好处时,就会发现它有很多优点。
阅读:http://articles.sitepoint.com/article/hierarchical-data-database
此外,如果您使用像 Doctrine 这样的 ORM 来为您实现树以及操作,情况可能会更好。
关于mysql - 数据库建模: Product with 1 or more categories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4420700/