Olá pessoal! Segue a minha solução para o exercício proposto.
CREATE TABLE cs.Cliente
(
id INT NOT NULL AUTO_INCREMENT,
nome VARCHAR NOT NULL,
endereco VARCHAR NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE cs.Agente
(
id INT NOT NULL AUTO_INCREMENT,
nome VARCHAR NOT NULL,
escritorioID INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (escritorioID) REFERENCES cs.Escritorio(id)
);
CREATE TABLE cs.Politica
(
id INT NOT NULL AUTO_INCREMENT,
tipo char NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE cs.Escritorio
(
id INT NOT NULL AUTO_INCREMENT,
nome VARCHAR NOT NULL,
localidade VARCHAR NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE cs.Contratado
(
id INT NOT NULL AUTO_INCREMENT,
clienteID INT NOT NULL,
agenteID INT NOT NULL,
politicaID INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (clienteID) REFERENCES cs.Cliente(id),
FOREIGN KEY (agenteID) REFERENCES cs.Agente(id),
FOREIGN KEY (politicaID) REFERENCES cs.Politica(id)
);
Adicionei uma nova tabela para escritórios, desta forma cada tabela trata dados únicos referente ao seu título. Concluo, ao aplicar a 3ª forma normal, obtemos um banco de dados mais organizado, eficiente e fácil de manter. Essa normalização permite evitar problemas como anomalias de inserção, atualização e deleção, além de melhorar o desempenho das consultas.