Twój projekt jest odpowiedni. Jestem specjalistą od baz danych, który został programistą, więc rozumiem skłonność do umieszczania kategorii i podkategorii w jednej tabeli, ale KISS nigdy się nie pomyli.
O ile ekstremalna wydajność lub nieskończona hierarchia nie są wymagane (zgaduję, że nie), możesz iść.
Jeśli możliwość powiązania wielu podkategorii z produktem jest wymogiem, zgodnie z @Mikaelem, potrzebujesz konfiguracji takiej jak ta, która tworzy relację wiele-do-wielu za pomocą tabeli łączenia/przecinania, 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))
Mam nadzieję, że to pomoże...
Eric Tarasoff