Database design 在数据库中存储类别和产品类型的最佳方法
我有三种产品类型。以后会更多。 我还有产品类别。类别不能有多个产品类型。那么,我应该如何保持类别 1.Database design 在数据库中存储类别和产品类型的最佳方法,database-design,Database Design,我有三种产品类型。以后会更多。 我还有产品类别。类别不能有多个产品类型。那么,我应该如何保持类别 1.id |家长| id |姓名 我将产品类型设置为根类别。 例如: Electronic > computer > laptop Electronic的父id将为0,因此将链接下一个类别 id |父项|产品|类型|名称 我将从产品类型获取电子版本,计算机的父id将为0 哪种方式更好?对于类别: ID | Name | Parent_ID (父ID用于类别树) 对于产品: ID |
id |家长| id |姓名
我将产品类型设置为根类别。例如:
Electronic > computer > laptop
Electronic的父id将为0,因此将链接下一个类别
id |父项|产品|类型|名称
ID | Name | Parent_ID
(父ID用于类别树)
对于产品:
ID | Category_ID | Name | Description | Other
假设类别树是这样的
Computers [ID: 1 | Parent: 0]
|-Laptops [ID: 2 | Parent: 1]
|-Desktop [ID: 3 | Parent: 1]
|-Printers [ID: 4 | Parent: 1]
| |-Brand #1 [ID: 5 | Parent: 4]
| |-Brand #2 [ID: 6 | Parent: 4]
|-Other stuff [ID: 7 | Parent: 1]
然后,如果您想显示来自(例如,Printers
)的所有产品,只需执行一个递归,从Printers
类别及其子类别获取所有项目
TL;博士
第一种方法更好您的数据库是这样的吗 表:产品类型
id | parent_id | name
-------------------------------
1 | null | Electronics
-------------------------------
2 | 1 | Computer
-------------------------------
3 | 2 | Laptop
-------------------------------
如果是这样,为什么需要进一步的表来获得结果?
当您需要一个新类别时,只需添加一个新的parrent及其子项。正如您所提到的,您现在有三种产品类型,以后可以增加产品类型,您需要一个产品类型表-
Product_type
------------
1> product_type_id - Primary Key
2> product_type_name
现在您有了categories表,它将是分层的类别数据,并且与product_type表有一对多的关系(正如您所说的类别不能有多个产品类型),因此您的表设计如下
Product_categories
------------------
1> product_cat_id - Primary key
2> product_type_desc
3> parent_product_type_id (for hierarchical relationship)
4> product_type_id - foreign key to **Product_type** table.
您可以在此详细说明任何进一步的要求,以便我们能够帮助您
谢谢我建议使用嵌套集设计,而不是您当前使用的邻接列表设计 尽管它确实可以工作,但如果遇到性能问题,对嵌套集执行单个查询可以产生比从邻接列表(需要多次数据库调用)中更多的关于类别的信息 在过去的许多应用程序中,我都使用过,而且效果非常好 TL;医生: 邻接列表
- 优点:易于实现
- 缺点:需要递归数据库调用来确定树中的深度和位置等信息
- 优点:可以在一次查询中生成有关数据的大部分信息
- 缺点:难以实施