简短的问题:应该如何管理出现在多个类别下的产品类别?这样做是一个坏习惯吗?
背景信息: 我们有一个产品数据库,其类别如下:
Products
-Arts and Crafts Supplies
-Glue
-Paper Clips
-Construction Paper
-Office Supplies
-Glue
-Paper Clips
请注意,胶水和回形针被分配给这两个类别。虽然它们出现在这个类别树中的两个不同位置,但它们在数据库中具有相同的类别 ID。为什么?两个原因:
- 类别被分配了属性——例如,回形针可以有重量、材料、颜色等。
- 分配到胶水类别的产品显示在工艺品和办公用品下。这是意料之中的——它们与数据库中的实际类别 ID 相同。
这使我们能够管理单个类别及其属性和分配的产品,但将其放置在类别树中的多个位置。
我们使用的是嵌套集模型,所以我们用来支持它的 db 结构是:
Category
----------
CategoryID
CategoryName
CategoryTree
------------
CategoryTreeID
CategoryID
Lft
Rgt
因此,Category 和 CategoryTree 之间存在 1:M,因为在类别树中可以有给定类别的多个实例。
是否有一种更简单的方法来对此进行建模,以允许产品类别显示在多个类别下?