多个类别/产品关系的数据库模式

Sre*_*ran 4 php mysql database-design

我想为具有类别/子类别管理的电子商务应用程序设计数据库.请建议一个数据库架构,我们可以在其中创建类别和子类别,并将产品添加到这些类别.每个产品可以有多个类别,我们可以使用布尔数据库查询选择属于多个类别的产品

谢谢

pax*_*blo 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)
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以实现类别层次结构的目标,并实现产品和类别之间的多对多关系.


您可以使用以下查询选择属于多个类别(例如,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
Run Code Online (Sandbox Code Playgroud)

  • 请参阅更新:老式方式:从产品 a、产品 b 中选择 a.product_id,其中 a.product_id = b.product_id 和 a.category_id = 3 和 b.category_id = 4。毫无疑问,更“现代”的方式为好吧,一个像样的 DBMS 应该对它们进行同等的优化。 (2认同)