Para um estudo do tema Educação, foram coletados dados de es...
ESCOLA (cod-escola, nome-escola, cod-municipio, quantidade-alunos)
PROFESSOR (CPF, nome-prof, data-nascimento, cod-municipio-residencia, cod-escola-prof)
A chave primária de ESCOLA é cod-escola, e a de PROFESSOR é CPF. A coluna cod-escola-prof em PROFESSOR é uma chave estrangeira e indica em que escola o professor leciona. Considere a utilização dos operadores de Projeção (π ou PROJETE), Seleção (σ ou SELECIONE) e Junção ( ou JUNTE) da Álgebra Relacional.
Que sequência de operações, em Álgebra Relacional, produz como resultado uma relação R-X com CPF e nome dos professores que NÃO residem no mesmo município onde lecionam?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Basta começarmos "de traz para frente":
R-X faz a projeção de cpf e nome-prof (são as "colunas" que deverão ser projetadas).
Estas "colunas", em R-X, trarão os valores selecionados em R-B, onde foram atendias as condições em que cod-municipio-residencia é diferente de cod-municipio (ou seja, professor mora numa cidade mas trabalha em outra).
Finalizando, faz-se a junção na R-A utilizando a chave estrangeira cod-escola-prof, da tabela PROFESSOR com a chave primária cod-escola da tabela ESCOLA.
Gabarito D
Olha, nessa a cesgranrio podia ter colocado normalmente os operadores pelas letras gregas, essa sopa de letrinhas deu trabalho.
Para quem tem dificuldade em algebra relacional recomendo o livro Sistemas de Bancos de Dados, capítulo 8, o entendimento dele não é comprometido pela falta do resto do livro se já existe um entendimento de modelo relacional, mas caso não tenha é só ler o capítulo 5 antes.
O seguinte site é muito útil para praticar, usei muito enquanto estudava a disciplina de BD: https://dbis-uibk.github.io/relax/landing.
Segue a expressão:
π cpf, nome_prof ( σ cod_municipio_residencia ≠ cod_municipio (PROFESSOR ⨝ cod_escola_prof = cod_escola ESCOLA) )
Se fizermos as atribuições em separado fica:
JUNTAR:
r-a ← (PROFESSOR ⨝ cod_escola_prof = cod_escola ESCOLA)
SELECIONAR:
r-b ← σ cod_municipio_residencia ≠ cod_municipio r_a
PROJETAR:
r-x ← π cpf, nome_prof ( r_b )
## Analisando as Alternativas e Solução
**Compreendendo o Problema:**
Queremos encontrar os professores que não residem no mesmo município onde lecionam. Para isso, precisamos comparar o `cod-municipio-residencia` do professor com o `cod-municipio` da escola em que ele leciona.
**Analisando as Alternativas:**
* **A:** A seleção é feita antes da junção, o que pode levar a resultados incorretos, pois a comparação entre municípios seria feita apenas com base nos dados do professor, sem considerar a escola.
* **B:** A junção é feita com uma condição que não é relevante para o problema (cod-municipio-residencia é diferente de cod-municipio). Além disso, a projeção é feita sobre o resultado da junção, mas a condição da seleção não é levada em consideração.
* **C:** A seleção é feita apenas sobre a tabela PROFESSOR, o que não leva em consideração a informação da escola.
* **D:** Essa alternativa parece ser a mais promissora. Primeiro, a junção é feita corretamente, relacionando os professores com suas respectivas escolas. Em seguida, a seleção é feita para encontrar os professores que não residem no mesmo município onde lecionam. Por fim, a projeção extrai apenas as colunas desejadas (CPF e nome).
* **E:** A ordem das operações não é ideal. A seleção deveria ser feita após a junção para garantir que a comparação entre municípios seja feita corretamente.
**Solução:**
A alternativa **D** é a que apresenta a sequência de operações correta para resolver o problema.
**Passo a passo da solução:**
1. **R-A ← JUNTE PROFESSOR a ESCOLA onde cod-escola-prof = cod-escola:**
* Essa operação une as tabelas PROFESSOR e ESCOLA, relacionando cada professor com a escola em que leciona, com base na chave estrangeira `cod-escola-prof`.
2. **R-B ← SELECIONE R-A onde cod-municipio-residencia é diferente de cod-municipio:**
* A partir do resultado da junção (R-A), selecionamos apenas as linhas onde o código do município de residência do professor é diferente do código do município da escola.
3. **R-X ← PROJETE CPF, nome-prof de R-B:**
* Projetamos o resultado final (R-B), mantendo apenas as colunas CPF e nome-prof dos professores que atendem à condição da seleção.
**Resposta:**
A alternativa **D** apresenta a sequência de operações correta para obter a relação R-X com CPF e nome dos professores que NÃO residem no mesmo município onde lecionam.
**Em resumo:**
A solução envolve três etapas:
1. **Junção:** Relacionar professores e suas respectivas escolas.
2. **Seleção:** Filtrar os resultados para encontrar os professores que não residem no mesmo município.
3. **Projeção:** Extrair as colunas desejadas do resultado final.
Essa sequência de operações garante que a comparação entre os municípios seja feita corretamente e que apenas os professores que atendem à condição sejam incluídos no resultado final.
Fonte: Gemini
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo