如何构建为产品提供子类别的SQL设计?

如何构建为产品提供子类别的SQL设计?,sql,categories,article,webshop,Sql,Categories,Article,Webshop,我正在尝试构建一个webshop数据库,但我遇到了一个问题,当涉及到SQL产品表的设计时,它提供了子类别 例如,我有一个主类别,它总是设置为: 1.Cars 然后我有第一个子类 1.1 BMW 1.2 Mercedes 最后,在某些情况下,我有一个更深的类别 1.1.1 BMW M3 1.1.2 BMW M5 1.2.1 Mercedes 1 1.2.2 Mercedes 2 目前我有三个表: tbl_Article int ArticleId char Description deci

我正在尝试构建一个webshop数据库,但我遇到了一个问题,当涉及到SQL产品表的设计时,它提供了子类别

例如,我有一个主类别,它总是设置为:

1.Cars
然后我有第一个子类

1.1 BMW
1.2 Mercedes
最后,在某些情况下,我有一个更深的类别

1.1.1 BMW M3
1.1.2 BMW M5

1.2.1 Mercedes 1
1.2.2 Mercedes 2
目前我有三个表:

tbl_Article
int ArticleId
char Description
decimal Price
int Category
int SubCategory

tbl_Category
int CategoryId
char Description
int hasSubCategories

tbl_SubCategory
int SubCategoryId
int Category
char Description
如何解决此问题,以便在需要时拥有多个子类别

非常感谢你

您可以设计一个带有外键的“类别表”:

tbl_类别

int   id                                            --primary key
int   fk_parentCategory REFERENCES tbl_category.id  --foreign key, can be null
char  description
...
tbl_产品

int   id         --primary key
int   category   --foreign key, can not be null
char  name
...
fk_parentCategory
是一个外键,指向它自己的表(但不同的类别)。它也可以为空

如果为空,则为顶级类别。如果不是,它是一个子类别

1.1.1 BMW M3
1.1.2 BMW M5

1.2.1 Mercedes 1
1.2.2 Mercedes 2

你只需要关心,一个类别永远不会指向它自己。因此列
id
的值不能与列
fk\u parentCategory
的值相同,谢谢,这对我很有帮助:)