Uma empresa aérea possui um sistema de informação para regis...
CREATE TABLE PASSAGEIRO ( CODIGO NUMERIC(5) NOT NULL, NOME TEXT NOT NULL, PRIMARY KEY (CODIGO));
CREATE TABLE VOO ( NUMERO NUMERIC(3) NOT NULL, ORIGEM TEXT NOT NULL, DESTINO TEXT NOT NULL, NUM_LUGARES NUMERIC(3) NOT NULL, PRIMARY KEY (NUMERO));
CREATE TABLE RESERVA ( NUM_VOO NUMERIC(3) NOT NULL, CD_PASS NUMERIC(5) NOT NULL, PRIMARY KEY (NUM_VOO, CD_PASS), FOREIGN KEY (NUM_VOO) REFERENCES VOO(NUMERO), FOREIGN KEY (CD_PASS) REFERENCES PASSAGEIRO(CODIGO));
Na Figura a seguir, são exibidos os estados atuais dessas tabelas.
Qual comando SQL será executado sem produzir erro?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
A) ERRADO - O CODIGO está sendo usado na tabela RESERVA
B) CORRETO
C) 56000 não pertence a nenhum passageiro
D) 56390 é uma chave primária e já está associada ao FELIPE DE SOUZA
E) Este voo está associado à tabela RESERVA. Ele deve ser atualizado lá também
Essa questão é quase inteira sobre Foreign Keys. Para respeitar as restrições de integridade:
1- Toda valor em uma coluna que seja FOREIGN KEY deve ser igual a um valor na coluna a qual referencia, ou ser null. Por causa disso a C está errada, 56000 não é o id de nenhum passageiro da tabela PASSAGEIRO.
2- Um SGBD não permite que uma KEY que está sendo referenciada por um FOREIGN KEY em outra tabela seja deletada ou atualizada se for gerar uma quebra na integridade da outra tabela. Por isso é usado as CONSTRAINTS do tipo "On DELETE set NULL, on UPDATE CASCADE". Assim, alterações na chave refenciada são automaticamente atualizadas nas devidas tabelas as quais a referenciam.
tendo que fazer questão com bloco de notas pra indentar os códigos
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo