Questão nº 49
Questão de Tecnologia da Informação · FGV BANESTES 2021 (nº 49)
Nas próximas cinco questões, considere as tabelas T1, T2 e T3, cujas estruturas e instâncias são exibidas a seguir. O valor NULL deve ser tratado como unknown (desconhecido).
Suponha que as tabelas T1 e T2, descritas anteriormente, tenham sido declaradas com as colunas A e C, respectivamente, definidas como chaves primárias.
Para tanto, a definição de chaves estrangeiras na tabela T3 deveria ter como base o script:
- A```
foreign key (A) references T1(A),
foreign key (C) references T2(C)
``` (alternativa correta) - B`foreign key (A, C) references T1(A), T2(C)`
- C```
foreign key T1(A) for A,
foreign key T2(C) for C
``` - D`foreign key T1(A) for A, T2(C) for C`
- E```
foreign key T1(A) references (A),
foreign key T2(C) references (C)
```
Resposta comentada
Gabarito Alternativa A
Uma chave estrangeira (foreign key) é uma coluna (ou conjunto de colunas) em uma tabela que cria um elo com a chave primária (primary key) de outra tabela, garantindo que os dados relacionados sejam válidos e existam.
(A) Correta: Esta é a sintaxe padrão e correta para definir duas chaves estrangeiras separadas. Cada cláusula `foreign key (coluna_na_tabela_atual) references TabelaReferenciada(coluna_chave_primaria)` estabelece uma relação individual.
(B) Incorreta: A sintaxe `foreign key (A, C)` é usada para uma chave estrangeira composta (que referencia uma chave primária composta em uma única tabela). Não é possível listar múltiplas tabelas após `references` dessa forma para referenciar chaves primárias de tabelas diferentes em uma única cláusula `foreign key`. Armadilha da banca: Tenta combinar a definição de múltiplas chaves estrangeiras em uma única linha de forma incorreta, confundindo com a sintaxe de chaves estrangeiras compostas.
(C) Incorreta: Esta sintaxe é inválida em SQL. A cláusula `foreign key` deve especificar as colunas da tabela atual primeiro, seguidas por `references` e a tabela e colunas referenciadas. `for A` e `for C` não fazem parte da sintaxe padrão.
(D) Incorreta: Assim como a alternativa (C), esta sintaxe é inválida em SQL e não corresponde à forma correta de declarar chaves estrangeiras.
(E) Incorreta: A sintaxe `foreign key T1(A)` está incorreta; o correto seria `foreign key (A)` para especificar a coluna da tabela atual. Além disso, `references (A)` está incompleto, pois falta o nome da tabela referenciada.
Fonte: FGV BANESTES 2021 Analista em Tecnologia da Informação - Desenvolvimento de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.
