Php 多类别/产品关系的数据库架构

Php 多类别/产品关系的数据库架构,php,mysql,database-design,Php,Mysql,Database Design,我想为电子商务应用程序设计一个具有类别/子类别管理的数据库。请建议一个数据库模式,我们可以在其中创建类别和子类别,并将产品添加到这些类别中每个产品可以有多个类别,我们可以使用布尔数据库查询选择属于多个类别的产品 谢谢这最好用联接表来解决。也就是说,您有一个产品表和一个类别表,每个表都有一个主键。然后,创建第三个表,即联接表。它有3列:主键、category\u id和product\u id。然后,当您想要在产品和类别之间添加关系时,可以在联接表中插入一行,其中包含相关的category\u i

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


谢谢

这最好用联接表来解决。也就是说,您有一个
产品
表和一个
类别
表,每个表都有一个主键。然后,创建第三个表,即联接表。它有3列:主键、
category\u id
product\u id
。然后,当您想要在产品和类别之间添加关系时,可以在联接表中插入一行,其中包含相关的
category\u id
product\u id
。然后,您可以将这3个表与联接一起使用来显示关系。

对于任何级别的类别和子类别,以及属于多个类别的产品,我将从以下内容开始:

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

到目前为止,您想出了什么?如何获得具有两个类别id的产品,例如3和4?请参阅更新:老派方法:从产品a、产品b中选择a.product\u id,其中a.product\u id=b.product\u id和a.category\u id=3和b.category\u id=4。毫无疑问,还有一种更“现代”的方法,尽管一个好的DBMS应该同样地优化它们。