mysql - 数据库建模: Product with 1 or more categories

标签 mysql database database-design

我正在研究一种数据库设计,该设计允许产品属于 1 个或多个类别。类别可以是父子关系。这是我到目前为止所拥有的:

==================
product
==================
product_id
name

==================
category
==================
category_id
parent_category_id
level
name

==================
product_category
==================
product_id
category_id (leaf node only)

问题

  1. 设计好看吗?
  2. 我只关心product_category->category_id中的叶节点对吗? (我想我可以使用这些信息从叶节点一直到根节点)
  3. 给定一个产品,我如何获取该产品所属的类别树?
  4. 给定一个类别(类别树中的任何级别),我如何获取该类别下分类的产品数量?
  5. 我还有其他问题需要调查吗?

最佳答案

您所呈现的内容看起来像是数据库中树的正确设计。但是,您的查询可能会变得复杂,您可能会发现自己需要对某些任务进行多次查询,例如遍历深度时每个级别都有一个查询。

但是,数据库中还存在一种完全不同的树实现方法。这有点违反直觉,但是当您了解查询简单性的好处时,就会发现它有很多优点。

阅读:http://articles.sitepoint.com/article/hierarchical-data-database


此外,如果您使用像 Doctrine 这样的 ORM 来为您实现树以及操作,情况可能会更好。

关于mysql - 数据库建模: Product with 1 or more categories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4420700/

相关文章:

Mysql:添加一列并填写

swift - Realm 迁移 : Migrating objects to another

android - 我们如何在android中删除数据库?

laravel - 为用户之间的聊天设计数据库

mysql - 错误代码: 1248. Every derived table must have its own alias 找不到查询的解决方案

mysql - 删除多对多关系中的数据或状态 = 不活动

database - 在不复制输出的情况下从多个表创建 View

c# - 如何让这个系统设计和逻辑更有效率? (内部消息系统)

sql - 用什么代替多态关联?

python - 在 web.py 中返回多行