2014-01-30 24 views
1

我試圖建立一個網上商店數據庫,我有一個問題,當它涉及到一個SQL產品表,它提供了子小類的設計。如何構建一個SQL設計,該設計爲產品提供子子類別?

對於examle我有一個主類,它始終設置:

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 

我怎樣才能解決這個問題,所以,如果需要,我可以擁有多個子類別?

非常感謝!

回答

1

你可以設計一個 「類別表」,與外鍵本身:

tbl_category

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

tbl_product

int id   --primary key 
int category --foreign key, can not be null 
char name 
... 

fk_parentCategory是一個外鍵,指向它自己的表格(但不同的類別)。它也可以爲null。

如果爲空,它是頂級類別。如果不是,則它是一個子類別。

你只需要關心,一個類別永遠不會指向自己。因此,id列的值不能與列fk_parentCategory相同。

+0

謝謝,這幫了我:) – zvaenr