我想为具有类别/子类别管理的电子商务应用程序设计数据库。请建议数据库架构,我们可以在其中创建类别和子类别,并将产品添加到这些类别。 每个产品可以有多个类别,我们可以使用布尔数据库查询选择属于多个类别的产品
由于
答案 0 :(得分:16)
对于任何级别的类别和子类别,以及属于多个类别的产品,我将从以下开始:
Categories:
category_id
parent_category_id foreign key (Categories.category_id)
... other category information ...
primary key (category_id)
Products:
product_id
... other product information ...
primary key (product_id_id)
ProductCategories:
product_id foreign key (Products.product_id)
category_id foreign key (Categories.category_id)
primary key (category_id,product_id)
index (product_id)
通过这种方式,您可以实现类别层次结构的目标,并实现产品和类别之间的多对多关系。
您可以使用以下查询选择属于多个类别(例如,3和4)的产品ID:
select a.product_id
from Products a, Products b
where a.product_id = b.product_id
and a.category_id = 3
and b.category_id = 4
答案 1 :(得分:0)
使用连接表可以最好地解决这个问题。也就是说,您有一个products
表和一个categories
表,每个表都有一个主键。然后,您创建第三个表,即连接表。它有3列:它的主键category_id
和product_id
。然后,当您想要在产品和类别之间添加关系时,可以在连接表中插入一行,其中包含相关的category_id
和product_id
。然后,您可以将3个表与连接一起使用以显示关系。