Questão nº 69
Questão de Tecnologia da Informação · FGV TJ-AP 2024 (nº 69)
João, administrador de banco de dados, deverá projetar um banco de dados Oracle de registro de alunos que contenha várias tabelas para armazenar informações acadêmicas:
A tabela “Aluno” armazena informações sobre alunos.
A tabela “Notas_Aluno” armazena informações sobre as notas do aluno.
Ambas as tabelas têm uma coluna chamada “Aluno_ID”.
A coluna “Aluno_ID” na tabela “Aluno” é uma chave primária.
João deverá criar a chave estrangeira na coluna “aluno_ID” da tabela “Notas_Aluno” para relacionar-se com a coluna “aluno_ID” da tabela “Aluno”. Para isso, João deverá utilizar o seguinte comando:
- ACREATE TABLE notas_aluno (aluno_ID NUMBER(12), media_notas NUMBER(4,3), CONSTRAINT aluno_ID_fk REFERENCES aluno(aluno_ID));
- BCREATE TABLE notas_aluno (aluno_ID NUMBER(12), media_notas NUMBER(4,3), CONSTRAINT FOREIGN KEY (aluno_ID) REFERENCES aluno (aluno_ID));
- CCREATE TABLE notas_aluno (aluno_ID NUMBER(12), media_notas NUMBER(4,3), aluno_ID_fk FOREIGN KEY (aluno_ID) REFERENCES aluno(aluno_ID));
- DCREATE TABLE notas_aluno (aluno_ID NUMBER(12), media_notas NUMBER(4,3), CONSTRAINT aluno_ID_fk FOREIGN KEY (aluno_ID) REFERENCES aluno(aluno_ID)); (alternativa correta)
- ECREATE TABLE notas_aluno (aluno_ID NUMBER(12), media_notas NUMBER(4,3), CONSTRAINT aluno_ID_fk REFERENCES (aluno_ID) FOREIGN KEY aluno(aluno_ID));
Resposta comentada
Gabarito Alternativa D
Uma chave estrangeira é uma coluna (ou conjunto de colunas) em uma tabela que estabelece um link para a chave primária de outra tabela, garantindo que os dados relacionados sejam consistentes e válidos.
(A) Incorreta: Esta alternativa está sintaticamente incorreta para definir uma chave estrangeira em nível de tabela. Faltou a palavra-chave `FOREIGN KEY` antes da especificação da coluna. A sintaxe `CONSTRAINT nome_da_constraint REFERENCES tabela_pai(coluna_pai)` não é válida para uma chave estrangeira em nível de tabela.
(B) Incorreta: A sintaxe está incorreta porque o nome da constraint (restrição) está faltando após a palavra-chave `CONSTRAINT`. Deveria ser `CONSTRAINT nome_da_constraint FOREIGN KEY (...)`.
(C) Incorreta: A palavra-chave `CONSTRAINT` está faltando antes do nome da restrição (`aluno_ID_fk`). A estrutura correta para uma restrição em nível de tabela é `CONSTRAINT nome_da_restricao TIPO_DA_RESTRIÇÃO (colunas) ...`.
(D) Correta: Esta é a sintaxe padrão e correta para definir uma chave estrangeira em nível de tabela no Oracle SQL. Ela especifica `CONSTRAINT` seguido pelo nome da restrição (`aluno_ID_fk`), depois `FOREIGN KEY` indicando a coluna na tabela atual (`(aluno_ID)`) e, por fim, `REFERENCES` para a tabela e coluna pai (`aluno(aluno_ID)`).
(E) Incorreta: A ordem das palavras-chave `REFERENCES` e `FOREIGN KEY` está invertida e a sintaxe está completamente embaralhada, tornando-a inválida.
Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.