Seu projeto é apropriado. Eu sou um cara de banco de dados que virou desenvolvedor, então posso entender a inclinação de ter Categoria e Subcategoria em uma tabela, mas você nunca pode errar com o KISS.
A menos que desempenho extremo ou hierarquia infinita seja um requisito (suponho que não), você está pronto para ir.
Se poder associar várias subcategorias a um produto é um requisito, para o ponto de @Mikael, você precisaria de uma configuração como esta que cria um relacionamento muitos para muitos por meio de uma tabela de junção/interseção, 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 ajude...
Eric Tarasoff