2010-04-18 92 views
3

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

感谢

+0

你有什么想出这么远? – Oded 2010-04-18 15:36:09

回答

14

对于类别和子类别,任何级别的产品属于多个类别一起,我会先从:

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 
+0

如何获得带有两个category_id的产品,例如3和4? – 2010-04-18 15:46:16

+1

查看更新:旧派方式:从产品a,产品b中选择a.product_id,其中a.product_id = b.product_id和a.category_id = 3和b.category_id = 4。毫无疑问,更现代的方式以及一个体面的DBMS应该平等地优化它们。 – paxdiablo 2010-04-18 15:51:10

+0

我不明白你制作分类表的方式。你能解释一下吗?或者你可以给我一个简单的SQL例子来创​​建表,所以我可以研究它的每个元素。 – Qsiris 2012-08-09 21:22:14

0

这将与连接表来最好的解决选择产品属于多个类别。也就是说,你有一个products表和一个categories表,每个表都有一个主键。然后,创建第三个表,即连接表。它有3列:它的主键,category_idproduct_id。然后,当您想要添加产品和类别之间的关系时,请将相关的category_idproduct_id行插入到连接表中。然后,您可以使用这3个表格和连接来显示关系。