Su diseño es apropiado. Soy un tipo de base de datos convertido en desarrollador, por lo que puedo entender la inclinación de tener Categoría y Subcategoría en una tabla, pero nunca puedes equivocarte con KISS.
A menos que un rendimiento extremo o una jerarquía infinita sean un requisito (supongo que no), está listo para comenzar.
Si poder asociar múltiples subcategorías con un producto es un requisito, al punto de @Mikael, necesitaría una configuración como esta que crea una relación de muchos a muchos a través de una tabla de unión/intersección, 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))
Espero que ayude...
Eric Tarasoff