我有三种产品类型。它会更晚。 我也有产品类别。类别不能有多种产品类型。那么,我该如何保留类别。
1。id | parent_id | name
我会将产品类型设置为根类别 例如:
Electronic > computer > laptop
电子的父ID将为0,下一个类别将因此链接。
id | parent_id | product_type | name
我将从product_type获取电子邮件,计算机的parent_id将为0。
哪种方式更好?
答案 0 :(得分:1)
对于类别:
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
类别及其子类别中的所有项目。
第一种方式更好
答案 1 :(得分:0)
您的数据库看起来像这样吗?
表:product_type
id | parent_id | name
-------------------------------
1 | null | Electronics
-------------------------------
2 | 1 | Computer
-------------------------------
3 | 2 | Laptop
-------------------------------
如果是这样,为什么还需要一个表来获得结果呢? 当你需要一个新类别时,只需添加一个新的parrent及其子类。
答案 2 :(得分:0)
如前所述,您现在有三种产品类型,以后可以增加产品类型,您需要一个产品类型表 -
Product_type
------------
1> product_type_id - Primary Key
2> product_type_name
现在您有类别表,它将是分层类别数据,并且与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.
您可以在此详细说明任何进一步的要求,以便我们为您提供帮助。
由于
答案 3 :(得分:0)
我建议使用嵌套的设计而不是你当前使用的设计,邻接列表设计。
虽然它确实有效,但如果遇到性能问题,嵌套集上的单个查询可以产生更多关于类别的信息,而不是来自邻接列表(需要多个数据库调用)。
我过去曾使用this article on hierarchical data in mysql来处理许多应用程序而且效果非常好。
<强> TL; DR:强>
邻接列表
嵌套集