Encadenamiento de normalización de base de datos

Tengo encadenamiento de tablas múltiples así:

Tabla 1

product_id SERIAL NOT NULL,
name varchar,

Tabla 2(se mantiene separado de la tabla 1 porque el mismo nombre del producto pero puede tener un color diferente)

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

Tabla 3(mantenido separado de la tabla 2 porque el mismo color del producto pero puede ser de diferente tamaño)

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

por ejemplo, los datos del producto podrían existir de tal manera:

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 las tablas (es decir, para eliminar los duplicados), las separé como 3 tablas, pero no estoy seguro de si el encadenamiento es correcto o no.

Respuestas a la pregunta(3)

Su respuesta a la pregunta