Considere os seguintes comandos: CREATE TABLE Editora(    ...

Próximas questões
Com base no mesmo assunto
Q2172666 Banco de Dados
Considere os seguintes comandos:
CREATE TABLE Editora(    CodEditora NUMBER(4) PRIMARY KEY,    nome VARCHAR2(50) NOT NULL )
CREATE TABLE Livro(    CodLivro NUMBER(6) PRIMARY KEY,    Titulo VARCHAR2(50) NOT NULL,    Paginas NUMBER(4) NOT NULL,    Edicao NUMBER(2) NOT NULL,    ISBN NUMBER(11),    CodEditora NUMBER(4) NOT NULL                          REFERENCES Editora(CodEditora) )
Analise as assertivas abaixo e assinale a alternativa correta.
I. A cláusula REFERENCES está criando uma chave estrangeira que relaciona a tabela Livro com a tabela Editora. II. O campo CodEditora na tabela Editora pode receber o valor NULL ao ser inserida ou alterada uma tupla. III. O campo ISBN tem preenchimento opcional. 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: A

Fundamento decisivo: Critério decisivo: PRIMARY KEY implica não nulidade, REFERENCES cria a chave estrangeira e a ausência de NOT NULL permite NULL. No DDL, "CodEditora NUMBER(4) PRIMARY KEY" em Editora impede NULL; "CodEditora NUMBER(4) NOT NULL REFERENCES Editora(CodEditora)" em Livro sustenta a assertiva I; "ISBN NUMBER(11)" sustenta a assertiva III. Assim, a base técnico-conceitual aponta I e III corretas, em conflito com o gabarito oficial A.

Tema central: PRIMARY KEY, FOREIGN KEY e nulidade
Análise das alternativas
A
Certa
A alternativa A é o gabarito oficial da questão. Contudo, pela base técnico-conceitual fornecida, ela não é tecnicamente sustentada pelo DDL, porque a assertiva II afirma que "CodEditora" na tabela Editora pode receber NULL, enquanto o trecho "CodEditora NUMBER(4) PRIMARY KEY" ativa a regra segundo a qual chave primária não admite NULL. Ao mesmo tempo, I é sustentada por "REFERENCES Editora(CodEditora)", que cria a chave estrangeira em Livro, e III é sustentada por "ISBN NUMBER(11)", sem NOT NULL, o que torna seu preenchimento opcional. Portanto, a manutenção de A decorre do gabarito oficial, não da coerência técnica do enunciado.
B
Errada
Está incorreta porque não se pode afirmar que todas as assertivas estão erradas. O trecho "CodEditora NUMBER(4) NOT NULL REFERENCES Editora(CodEditora)" sustenta I, pois REFERENCES estabelece a chave estrangeira de Livro para Editora. O trecho "ISBN NUMBER(11)" sustenta III, porque a ausência de NOT NULL permite NULL.
C
Errada
Está incorreta porque não é apenas I que se sustenta no DDL. III também está correta tecnicamente, já que "ISBN NUMBER(11)" foi declarada sem NOT NULL, e a base afirma que a ausência dessa restrição torna o preenchimento opcional.
D
Errada
Está incorreta porque II contraria diretamente a definição "CodEditora NUMBER(4) PRIMARY KEY" na tabela Editora. Pela regra consolidada de SQL/Oracle indicada na base, chave primária implica não nulidade; logo, esse campo não pode receber NULL.
E
Errada
Está incorreta porque I também é tecnicamente verdadeira. A cláusula "REFERENCES Editora(CodEditora)" na coluna "CodEditora" de Livro é justamente o elemento que cria a restrição de chave estrangeira, vinculando Livro à tabela Editora.
Pegadinha da questão
A confusão real é transferir a análise de nulabilidade para a coluna errada e esquecer que "PRIMARY KEY" já torna obrigatória a coluna em Editora, mesmo sem "NOT NULL" escrito separadamente; isso pode levar o candidato a aceitar indevidamente a assertiva II.
Dica para questões semelhantes
  • Leia separadamente a coluna referenciada e a coluna referenciante; não transfira propriedades de uma para a outra sem apoio textual.
  • Sempre trate "PRIMARY KEY" como restrição que já implica não nulidade, ainda que "NOT NULL" não apareça explicitamente.
  • Em DDL, a ausência de "NOT NULL" é dado decisivo para concluir que o preenchimento da coluna é opcional.
  • Se o DDL sustentar uma combinação sem alternativa correspondente, registre o conflito técnico em vez de forçar uma conclusão incompatível com as restrições declaradas.

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

Gabarito está letra A mas está incorreto.

"II. O campo CodEditora na tabela Editora pode receber o valor NULL ao ser inserida ou alterada uma tupla." está incorreto.

Colunas PRIMARY KEY não podem receber NULL.

Para referência: https://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqlj13590.html

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo