允许某个类别拥有多个父母是否有意义?还有替代品吗?

Cor*_*use 11 database database-design nested-sets categories

简短问题:如何管理出现在多个类别下的产品类别?完全这样做是不好的做法?

背景信息: 我们有一个产品数据库,其类别如下:

Products

  -Arts and Crafts Supplies
    -Glue
    -Paper Clips
    -Construction Paper


  -Office Supplies
    -Glue
    -Paper Clips
Run Code Online (Sandbox Code Playgroud)

请注意,胶水和纸夹分配给两个类别.虽然它们出现在此类别树中的两个不同位置,但它们在数据库中具有相同的类别ID.为什么?两个原因:

  1. 为类别分配属性 - 例如,回形针可以具有重量,材料,颜色等.
  2. 分配到胶水类别的产品显示在工艺品和办公用品下.这是预期的 - 它们与数据库中的实际类别ID相同.

这允许我们管理单个类别及其属性和分配的产品,但将其放置在类别树中的多个位置.

我们使用的是嵌套集模型,因此我们用来支持它的db结构是:

Category
----------
CategoryID
CategoryName


CategoryTree
------------
CategoryTreeID
CategoryID
Lft
Rgt
Run Code Online (Sandbox Code Playgroud)

因此,Category和CategoryTree之间存在1:M,因为类别树中可能存在给定类别的多个实例.

有没有更简单的方法来模拟这个允许产品类别显示在多个类别下?

Jac*_*b G 5

我认为没有任何问题,只要所有胶水适用于办公用品工艺用品.