Questão nº 62

Questão de Tecnologia da Informação · CESGRANRIO Transpetro PSP-RH-2018.1 (nº 62)

CESGRANRIO2018Analista de Sistemas Júnior - InfraestruturaTecnologia da Informação
Gabarito: Ever comentário ↓

As Tabelas a seguir fazem parte do esquema de um banco de dados de uma escola de nível médio, que deseja controlar os resultados de seus alunos nos exames simulados do ENEM.

CREATE TABLE ALUNO (
    MATRICULA   NUMBER(5)    NOT NULL,
    NOME        VARCHAR2(50) NOT NULL,
    ANO         NUMBER(1)    NOT NULL,
    TURMA       CHAR(1)      NOT NULL,
    CONSTRAINT  ALUNO_PK PRIMARY KEY (MATRICULA)
)

CREATE TABLE SIMULADO (
    CODIGO      NUMBER(5)    NOT NULL,
    DESCRICAO   VARCHAR2(80) NOT NULL,
    DATA        DATE         NOT NULL,
    CONSTRAINT  SIMULADO_PK PRIMARY KEY (CODIGO)
)

CREATE TABLE PARTICIPACAO (
    MATRICULA   NUMBER(5)    NOT NULL,
    CODIGO      NUMBER(5)    NOT NULL,
    PONTOS      NUMBER(4),
    CONSTRAINT  PART_PK  PRIMARY KEY (MATRICULA,CODIGO),
    CONSTRAINT  PART_FK1 FOREIGN KEY (MATRICULA)
       REFERENCES ALUNO (MATRICULA),
    CONSTRAINT  PART_FK2 FOREIGN KEY (CODIGO)
       REFERENCES SIMULADO (CODIGO)
)

Considere que:
• A Tabela PARTICIPACAO registra a inscrição de alunos nos exames simulados promovidos pela escola. Um aluno pode inscrever-se em muitos simulados, e um simulado pode ter muitos alunos inscritos.
• Todas as vezes em que um aluno se inscrever em um simulado uma linha será inserida na tabela PARTICIPACAO.
• Após a correção de um simulado, os pontos obtidos pelos alunos inscritos são atualizados na tabela PARTICIPACAO.


Seja o seguinte comando SQL:

SELECT P.MATRICULA
FROM PARTICIPACAO P, SIMULADO S
   WHERE S.DATA='02/06/2017' AND S.CODIGO=P.CODIGO

Que sequência de operações da Álgebra Relacional produz o mesmo resultado que o comando SQL acima?

Resposta comentada

Gabarito Alternativa E

Conceito-chave: A Álgebra Relacional é uma linguagem formal para consultar bancos de dados, onde cada operação (como π\pi para projetar colunas, σ\sigma para filtrar linhas e \bowtie para juntar tabelas) é aplicada sobre relações (tabelas). A ordem das operações importa: primeiro filtramos (σ) e depois juntamos (⋈), para só então projetar (π) as colunas desejadas.

  • (A) Incorreta: A seleção σ\sigma está aplicada sobre o resultado da projeção π\pi, mas a projeção foi feita antes da junção, o que elimina a coluna CODIGO necessária para o join, e a ordem das operações está invertida.
  • (B) Incorreta: A notação está malformada (faltam parênteses e a seleção σ\sigma não está aplicada corretamente sobre a tabela SIMULADO), e a projeção π\pi está ausente no resultado final.
  • (C) Incorreta: A junção σ\sigma (seleção) foi usada no lugar da junção natural (\bowtie), o que é um erro conceitual — a operação de junção é \bowtie, não σ\sigma, e a projeção π\pi está aplicada antes da junção, perdendo a coluna CODIGO.
  • (D) Incorreta: A projeção π\pi está aplicada sobre a condição DATA = '02/06/2017', o que é inválido (projeção projeta colunas, não condições), e a ordem das operações está errada.
  • (E) Correta: Esta é a sequência correta: primeiro filtra os simulados com DATA = '02/06/2017' usando σ\sigma, depois junta com PARTICIPACAO pela condição CODIGO = CODIGO usando \bowtie, e por fim projeta apenas a coluna MATRICULA com π\pi. Isso reproduz exatamente o resultado do SQL, que seleciona as matrículas dos alunos que participaram de simulados naquela data.

Fonte: CESGRANRIO Transpetro PSP-RH-2018.1 Analista de Sistemas Júnior - Infraestrutura. Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho