1
resposta

Não estou perdendo dados ao separar a tabela em 2 novas tabelas?

Ao separar a tabela em modelo/ano e modelo/cor, não vejo como posso não perder algumas informações. Por exemplo: Antes tinhamos um campos com Fox-2015-Branco e Fox-2014-Vermelho. Agora temos uma tabela com Fox-2015 e Fox-2014 e outra com Fox-Branco e Fox-Vermelho. Desse modo, não podemos afirmar se existe um fox 2014 branco, ou um fox 2015 vermelho.

1 resposta

Bom dia, Gabriel!

Quando temos dados que se relacionam de forma 1-n é interessante que as tabelas sejam criadas em formato MASTER e DETAIL. Por exemplo: Podemos ter N cores diferentes para o mesmo modelo de carro, mas, o modelo é o mesmo. Minha sugestão é que crie uma tabela Master ou tabela 'pai' para armazenar os dados inerentes ao modelo do carro.

CREATE TABLE CARROS (ID NUMERIC(15,0), MODELO VARCHAR(100), ANO NUMERIC(4).....) Essa tabela CARROS deverá ter os dados inerentes do modelo e que a priori não são alteráveis ou customizáveis.

Agora para a tabela Detail CREATE TABLE CARROS_CORES (ID_CARRO NUMERIC(15,0), COR VARCHAR(50)....)

Note, cada modelo é único, mas, ele pode ter várias cores como opção. Ou Seja o Fox 2015 pode ter apenas 1 registro na tabela CARROS, mas pode ter quantas cores você quiser na tabela CARROS_CORES.

Veja, nesse exemplo existe o campo ID na tabela Carros e o campo ID_CARRO na tabela CARROS_CORES o Campo ID deverá ser uma primary key, e o campo ID_CARRO deverá ser uma Foreign Key referenciando a PK da Master.

Fazendo dessa forma acredito que resolverá seu problema, pois, através de JOIN entre as tabelas conseguirá relacionar o mesmo modelo a várias cores que ele tiver na detail.