具有多个类别和分层类别的产品的数据库架构

bra*_*ter 2 database-design

我需要一些关于我是否朝着正确方向前进的意见。

我正在尝试建立一个电子商务网站(带有 MySQL 后端),其中

  • 一个产品可以属于多个类别
  • 类别本质上是分层的

例如

食品 > 水果 > 红色 > 樱桃
     > 水果 > 黄色 > 香蕉
     > 健康 > 樱桃
  • 樱桃既是HealthyRed
  • 类别有层次结构

我计划在后端实现这一点的方式是:

  • 修改了用于存储类别层次结构的PreOrder 遍历。该树不会包含产品,而只会包含类别。
  • ProductID - CategoryID:多对多表:每个产品可以存储多个类别。

这是正确的方法吗?

我对这种方法的关注之一是;尽管不会经常添加新类别,但是当我们必须添加新类别时,我们将不得不在 productID-cateogryID 表中进行大量更新,因为类别 ID 现在将指向不同的东西!

有没有更好的方法来处理这个问题?

编辑:修改前序遍历更广为人知的是:嵌套集模型

Joe*_*own 5

您提出的是一个很好的解决方案,可以满足您对 M:N 产品到类别和分层类别的要求。

为避免将自己暴露在大量更新中: 您需要做两件事以确保您的交集表中没有大量更新。

首先,您需要确保您的类别具有稳定、持久的主键。

其次,您需要将食品链接到叶子类别。不要加入CherryRedHealthyFruitFood-只是把它加入到RedHealthy。您的嵌套集负责所有二级(和更高级别)关联。