← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

No contexto dos bancos de dados relacionais, analise a declaração de uma chave estrangeira na criação de uma tabela T2, exibida a seguir. CONSTRAINT FK_TESTE FOREIGN KEY (A) REFERENCES T1(A) Considere ainda as seguintes afirmativas a respeito desse comando e suas consequências: I. A coluna A na tabela T1 deve ser definida como chave primária ou equivalente. II. A coluna A da tabela T2 não pode conter valores nulos. III. A coluna A da tabela T2 não pode ser declarada como chave primária ou equivalente. Está correto somente o que se afirma em

Gabarito: A

Chave estrangeira serve para ligar uma tabela filha a uma tabela pai. Ela garante integridade referencial: o valor gravado em T2.A precisa existir em T1.A, salvo a hipótese de ser nulo, se a coluna permitir nulos. Ou seja, a presença da foreign key nao transforma automaticamente a coluna em obrigatoria nem impede que ela participe de outras restricoes. O ponto central da questao esta na tabela referenciada. Em regra, a coluna apontada na tabela T1 precisa identificar univocamente cada linha, entao ela deve ser chave primaria ou ter restricao de unicidade, isto e, ser equivalente a uma chave. Por isso a afirmacao I esta correta. Esse entendimento e o padrao do modelo relacional e das definicoes de SQL para integridade referencial. Ja a afirmacao II esta errada porque uma chave estrangeira pode aceitar valor nulo, a menos que a coluna tenha sido declarada com NOT NULL. Nulo, aqui, significa que ainda nao ha relacionamento definido. O banco nao barra isso por causa da foreign key sozinha. A afirmacao III tambem esta errada. Nada impede que uma coluna seja ao mesmo tempo chave estrangeira e chave primaria, ou participe de uma chave candidata, desde que as demais restricoes sejam atendidas. Por isso, no caso dado, somente a afirmacao I esta correta, e o gabarito e A.

Continue treinando

Questões relacionadas