Questão nº 36
Questão de Tecnologia da Informação · FCC TRT17 2022 (nº 36)
Considere que em um banco de dados PostgreSQL 13, aberto e funcionando em condições ideais, existam duas tabelas: Cidades (com os campos NomeCidade e Estado) e Populacao (com os campos Cidade, NumHabitantes, NumVaras). A tabela Cidades foi criada pelo comando:
`CREATE TABLE Cidades (NomeCidade VARCHAR(80) PRIMARY KEY, Estado VARCHAR(40));`
Para que, ao se inserir ou atualizar algum registro na tabela Populacao, seja verificado se o campo Cidade corresponde a uma cidade existente na tabela Cidades, deve-se utilizar uma chave estrangeira. Isso é feito utilizando o comando SQL na criação da tabela Populacao:
CREATE TABLE Populacao (Cidade VARCHAR(80)
I
, NumHabitantes INT, NumVaras INT);
A lacuna I é corretamente preenchida com
- A`FOREIGN KEY (Cidade) REFERENCES Cidades(NomeCidade)`
- B`FOREIGN KEY REFERENCES Cidades(NomeCidade)`
- C`REFERENCES Cidades(NomeCidade)` (alternativa correta)
- D`FOREIGN KEY Cidades(NomeCidade)`
- E`REFERENCES FOREIGN KEY (Cidade) TO Cidades(NomeCidade)`
Resposta comentada
Gabarito Alternativa C
Uma chave estrangeira (FOREIGN KEY) é uma regra que garante que os dados em uma coluna de uma tabela (a tabela "filha") correspondam a dados existentes em outra tabela (a tabela "pai"), geralmente na chave primária dela, mantendo a integridade referencial.
- (A) Incorreta: Esta sintaxe (
FOREIGN KEY (coluna_local) REFERENCES TabelaPai(coluna_pai)) é utilizada para definir uma chave estrangeira como uma restrição de tabela (table constraint). Embora seja uma forma válida de criar uma chave estrangeira, a lacuna I está posicionada logo após a definição da colunaCidade VARCHAR(80), indicando que se espera uma restrição de coluna (column constraint) para a colunaCidadeem questão. A armadilha aqui é que a sintaxe é quase correta para uma FK, mas não para o local exato da lacuna. - (B) Incorreta: A sintaxe está incompleta. Se fosse uma restrição de tabela, precisaria especificar qual coluna da tabela
Populacaoé a chave estrangeira (ex:FOREIGN KEY (Cidade)). - (C) Correta: Esta é a sintaxe correta para definir uma chave estrangeira como uma restrição de coluna. Ao colocar
REFERENCES Cidades(NomeCidade)imediatamente após a definição da colunaCidade VARCHAR(80), o PostgreSQL entende que a colunaCidadeda tabelaPopulacaodeve referenciar a colunaNomeCidadeda tabelaCidades. - (D) Incorreta: A sintaxe está incompleta e incorreta para a definição de uma chave estrangeira.
- (E) Incorreta: A sintaxe
TOnão é utilizada para definir chaves estrangeiras no PostgreSQL; a palavra-chave correta éREFERENCES.
Fonte: FCC TRT17 2022 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.