Questão FC295849
Que sequência de operações da Álgebra Relacional produz o mesmo resultado que o comando SQL acima?
Projeto e Modelagem de Dados
CESGRANRIO · 2018
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?
- \(\sigma\)DATA = '02/06/2017' (\(\pi\)MATRICULA (SIMULADO SIMULADO.CODIGO=PARTICIPACAO.CODIGO PARTICIPACAO))

- \(\sigma\)MATRICULA (( DATA = '02/06/2017' (SIMULADO)) CODIGO=PARTICIPACAO.CODIGO PARTICIPACAO)

- \(\pi\)MATRICULA ((\(\sigma\)DATA = '02/06/2017' (SIMULADO)) \(\sigma\)CODIGO=PARTICIPACAO.CODIGO PARTICIPACAO)
- \(\sigma\)MATRICULA ((\(\pi\)DATA = '02/06/2017' (SIMULADO))CODIGO=PARTICIPACAO.CODIGO PARTICIPACAO)

- \(\pi\)MATRICULA ((\(\sigma\)DATA = '02/06/2017' (SIMULADO))CODIGO=PARTICIPACAO.CODIGO PARTICIPACAO)

Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
A expressão correta retorna as matrículas dos alunos inscritos em simulados cuja data é 02/06/2017.
Passo a passo: primeiro aplica-se a seleção \( \sigma_{DATA='02/06/2017'}(SIMULADO) \), que reduz a relação SIMULADO às tuplas com essa data.
Em seguida realiza-se a junção entre esse resultado e PARTICIPACAO pelo atributo comum \(CODIGO\): \((\sigma_{DATA='02/06/2017'}(SIMULADO)) \bowtie_{CODIGO=PARTICIPACAO.CODIGO} PARTICIPACAO\).
Por fim, faz-se a projeção \( \pi_{MATRICULA} \) para retornar apenas o número da matrícula dos alunos resultantes.
Essa ordem é necessária porque a filtragem por DATA exige que a coluna DATA exista antes de reduzir às colunas finais com a projeção.
Conteúdo do catálogo FC Concursos · Atualizado em