Вашият дизайн е подходящ. Аз съм човек с бази данни, превърнал се в разработчик, така че мога да разбера склонността да имам категория и подкатегория в една таблица, но никога не можете да сбъркате с KISS.
Освен ако изключителна производителност или безкрайна йерархия не е изискване (предполагам, че не), можете да тръгнете.
Ако възможността за свързване на множество подкатегории с продукт е изискване, според @Mikael, ще ви е необходима настройка като тази, която създава връзка много към много чрез таблица за свързване/пресичане, 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))
Надявам се, че това помага...
Ерик Тарасоф