如何构建为产品提供子类别的SQL设计?
我正在尝试构建一个webshop数据库,但我遇到了一个问题,当涉及到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
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
的值相同,谢谢,这对我很有帮助:)