Considere o código SQL abaixo, que gerou a tabela ItemFatura . . .
Exercício 9
Considere o código SQL abaixo, que gerou a tabela ItemFatura.
CREATE TABLE ItemFatura(
idItemFatura INT NOT NULL,
idFatura INT NOT NULL,
descItemFatura VARCHAR(45),
valorItemFatura DOUBLE,
..I..
);
Considerando que a tabela ItemFatura possui chave primária composta pelos campos idItemFatura e idFatura, e que se uma fatura for excluída, automaticamente serão excluídos todos os seus itens, a lacuna I deve ser preenchida corretamente por
Resolução
- Parabéns!
O enunciado da questão informou que as colunas idItemFatura e idFatura compõe a chave primária(primary key), e que na deleção da chave estrangeira(foreign key) a exclusão de uma fatura será cascateada para os itens que compõe a fatura.
A letra C é a alternativa correta pois a sintaxe da primary key está correta, seguido da declaração da foreign key referenciado o campo idFatura da tabela Fatura e finalizando com a declaração do cascateamento da deleção de Itens no caso de deleção de uma Fatura.
PRIMARY KEY (idItemFatura, idFatura),
FOREIGN KEY (idFatura) REFERENCES Fatura(idFatura) ON DELETE CASCADE
- Errou?
A letra A está errada pois a sintaxe de criação da primary key está incorreta, ou seja, a declaração da foreign key deveria ser após a declaração da PK e não dentro conforme o enunciado da alternativa.
A letra B está errada pois a sintaxe de criação da foreign key está incorreta. As instruções FROM e WITH não fazem parte da sintaxe de criação da FK.
A letra D está errada. Apesar da sintaxe "PRIMARY KEY (idItemFatura, idFatura), FOREIGN KEY(idFatura) REFERENCES Fatura(idFatura)" estar correta, foi dito no enunciado do exercício "que se uma fatura for excluída, automaticamente serão excluídos todos os seus itens", ou seja, a alternativa está incompleta pois está faltando a declaração da instrução de cascateamento quando houver deleção de uma fatura.
A letra E está errada pois a sintaxe de criação da foreign key está incorreta. A instrução FROM não faz parte da sintaxe de criação da FK, ou seja, a cláusula FROM deveria ter sido substituída pela cláusula REFERENCES para que a alternativa E fosse considerada correta.
Complementos
#Conceitos
Chave primária ou primary key em inglês, é um conjunto de um ou mais campos cujos valores não se repetem, podendo ser utilizados como referência em outras tabelas, em banco de dados relacionais. A cláusula PRIMARY KEY é usada para definir um ou mais campos que serão a chave primária, principalmente usado durante a criação de uma tabela.
Chave estrangeira, chave externa ou foreign key em inglês, é um campo em um tabela que se refere a chave primária em outra tabela ou na mesma tabela, ou seja, uma relação em um banco de dados relacional. A cláusula FOREIGN KEY define a coluna da tabela que será a chave estrangeira, e é usado com a cláusula REFERENCES para indicar a tabela e coluna cuja chave faz referência.
A cláusula ON DELETE CASCADE é uma restrição(constraint) de chave estrangeira que é usada para excluir ou atualizar linhas em uma tabela referenciada, ou seja, é a propagação de uma exclusão para os registros que possuem as chaves estrangeiras correspondentes.