Encadeamento de Normalização do Banco de Dados

Eu tenho várias tabelas de encadeamento assim:

Tabela 1

product_id SERIAL NOT NULL,
name varchar,

Tabela 2(mantido separado da tabela1 porque o mesmo nome do produto, mas pode ser de cor diferente)

table2_id
product_id integer,
color varchar,
FOREIGN KEY (product_id) REFERENCES table1 (product_id) ON DELETE CASCADE

Tabela 3(mantido separado da tabela2 porque a mesma cor do produto, mas pode ter tamanho diferente)

table3_id
table2_id integer,
size varchar,
FOREIGN KEY (table2_id) REFERENCES table2 (table2_id) ON DELETE CASCADE

por exemplo, os dados do produto podem existir da seguinte maneira:

a chair (name)  -  red (color)  - 100cm(size)
a chair (name)  -  red (color)  - 200cm(size)
b chair (name)  -  green (color)  - 100cm(size)
b chair (name)  -  green (color)  - 200cm(size)
c chair (name)  -  black (color)  - s(size)
c chair (name)  -  black (color)  - m(size)
d chair (name)  -  black (color)  - null(size)
e chair (name)  -  gold (color)  - big(size)
e chair (name)  -  gold (color)  - small(size)

Para normalizar as tabelas (por exemplo, para remover as duplicatas), eu as separei como 3 tabelas, mas não tenho certeza se o encadeamento está correto ou não.