Din design är lämplig. Jag är en databaskille som har blivit utvecklare, så jag kan förstå benägenheten att ha kategori och underkategori i en tabell, men du kan aldrig gå fel av KISS.
Såvida inte extrem prestanda eller oändlig hierarki är ett krav (jag antar att det inte är det), är du bra att gå.
Om det är ett krav att kunna associera flera underkategorier till en produkt, enligt @Mikaels poäng, skulle du behöva en sådan uppsättning som skapar en många-till-många-relation via en join/skärningstabell, Product_SubCategory:
CREATE TABLE Product (ProductID int, Description nvarchar(100))
CREATE TABLE Product_SubCategory (ProductID int, SubCategoryID int)
CREATE TABLE SubCategory (SubCategoryID int, CategoryID int, Description nvarchar(100))
CREATE TABLE Category (CategoryID int, Description nvarchar(100))
Hoppas det hjälper...
Eric Tarasoff