Para apoiar os exemplos das operações da Álgebra Relacional, considere a ilustração abaixo do BD Empresa.
As variações da Operação JUNÇÃO estudadas até o momento (a saber, JUNÇÃO THETA, EQUIJUNÇÃO e JUNÇÃO NATURAL) são denominadas JUNÇÃO INTERNA (INNER JOIN):
- Na JUNÇÃO INTERNA entre R e S, as combinações de tuplas de R e S (ou seja, a concatenação de uma tupla de R com uma tupla de S) devem atender ao predicado de junção:
- as combinações, nas quais o predicado de junção é avaliado como falso, são eliminadas do (não estão presentes no) resultado da junção.
Por exemplo, "Qual o nome dos empregados e o nome dos departamentos que gerenciam?":
- uma expressão para a consulta é:
- π Pnome, Unome, Dnome (FUNCIONARIO ⨝ Cpf = Cpf_gerente DEPARTAMENTO);
- o predicado de junção presente nesta expressão é:
- Cpf = Cpf_gerente;
- o resultado da junção somente inclui as tuplas em que o predicado de junção é avaliado como verdadeiro:
- o resultado da junção está a seguir, conforme a ilustração do BD Empresa mostrada acima.
Pnome | Unome | Dnome |
---|---|---|
Fernando | Wong | Pesquisa |
Jennifer | Souza | Administração |
Jorge | Brito | Matriz |
No exemplo "Qual o nome dos empregados e, para aqueles que são gerentes, o nome dos departamentos que gerenciam?":
- A consulta é uma JUNÇÃO EXTERNA À ESQUERDA;
- A expressão é:
- π Pnome, Unome, Dnome (FUNCIONARIO ⟕ Cpf = Cpf_gerente DEPARTAMENTO) ;
- observe o uso do símbolo ⟕ (em vez de ⨝).
- O resultado da consulta é exibido abaixo.
Pnome | Unome | Dnome |
---|---|---|
João | Silva | NULL |
Fernando | Wong | Pesquisa |
Alice | Zelaya | NULL |
Jennifer | Souza | Administração |
Ronaldo | Lima | NULL |
Joice | Leite | NULL |
André | Pereira | NULL |
Jorge | Brito | Matriz |
No exemplo "Qual o nome dos empregados e, para aqueles que possuem dependentes, o nome dos seus dependentes?":
- A consulta é uma JUNÇÃO EXTERNA À ESQUERDA;
- A expressão é:
- π Pnome, Unome, Nome_dependente (FUNCIONARIO ⟕ Cpf = Fcpf DEPENDENTE) ;
- observe o uso do símbolo ⟕ (em vez de ⨝).
- O resultado da consulta é exibido abaixo.
Pnome | Unome | Nome_dependente |
---|---|---|
João | Silva | Michael |
João | Silva | Alicia |
João | Silva | Elizabeth |
Fernando | Wong | Alicia |
Fernando | Wong | Tiago |
Fernando | Wong | Janaina |
Alice | Zelaya | NULL |
Jennifer | Souza | Antonio |
Ronaldo | Lima | NULL |
Joice | Leite | NULL |
André | Pereira | NULL |
Jorge | Brito | NULL |
Na JUNÇÃO EXTERNA entre R e S, a relação resultante possui:
- as tuplas do resultado da JUNÇÃO INTERNA; e
- as tuplas de R e/ou S, quando o predicado de junção não é avaliado como verdadeiro.
Há três variações de JUNÇÃO EXTERNA:
- JUNÇÃO EXTERNA À ESQUERDA (LEFT OUTER JOIN), cujo símbolo é ⟕ ;
- JUNÇÃO EXTERNA À DIREITA (RIGHT OUTER JOIN), cujo símbolo é ⟖ ;
- JUNÇÃO EXTERNA COMPLETA (FULL OUTER JOIN), cujo símbolo é ⟗ .
Abaixo são mostrados exemplos para as três variações da operação JUNÇÃO EXTERNA.
Seja o esquema relacional simplificado abaixo:
- VENDE ( Bar, Cerveja )
- GOSTA ( Pessoa, Cerveja )
A relação VENDE refere-se aos bares e às marcas de cerveja que lá são vendidas.
A relação GOSTA representa marcas de cervejas e pessoas que gostam delas.
Criar uma issue no projeto https://github.com/plinioleitao/bd-2021-1-bia, com o título "Tópico 13", para responder:
Escreva em álgebra relacional as seguintes consultas:
- Quais as cervejas vendidas no bar “Pipoca”?
- Quais as pessoas que gostam de alguma(s) cerveja(s) vendida(s) no bar “Pipoca”?
- Quais as pessoas que não gostam de qualquer das cervejas vendidas no bar “Pipoca”?
IMPORTANTE: Use a sintaxe da Álgebra Relacional conforme os exemplos apresentados até então.
- Issue criada no projeto https://github.com/plinioleitao/bd-2021-1-bia, cujo título é "Tópico 13", para praticar operações da álgebra relacional.