Exercício: Consultas em álgebra relacional usando WinRDBI
Objetivo
O objetivo deste exercício é exercitar consultas em álgebra relacional. Para isso será usada a ferramenta WinRDBI.
Preparação
- Conecte-se ao servidor linux03, que possui o WinRDBI instalado. Não use SSH, abra a conexão diretamente nesse servidor!
- Verifique a JavaVM configurada para sua conta:
eselect java-vm list
- Selecione a JavaVM compatível com o WinRDBI ([2] emul-linux-x86-java-1.6):
eselect java-vm set user 2
- Obtenha o arquivo empresa.rdb e salve-o numa pasta.
- Execute o programa WinRDBI
/opt/bin/winrdbi
- Abra o banco de dados empresa.rdb (File -> Open).
- Abra uma nova sessão de consultas (File -> New Query -> Relational Algebra)
- Execute as seguintes consultas e observe o resultado:
% Ver dados do empregado 7 select codEmp=7 (empregado); % Ver somente nomes de empregados project nomeEmp (empregado); % Consulta nomeada (rename): listar empregados do departamento 4 empDep4 := select codDepto=4 (empregado); % Ver somente codEmp de temp codEmpDep4 := project codEmp (empDep4); % Ver somente codSuperv de temp, renomeando campo codSupDep4(codEmp) := project codSuperv (empDep4); % Uniao exUniao := (codEmpDep4) union (codSupDep4); % Diferença exDif := (exUniao) difference (codEmpDep4); % Intersecao exInter := (exUniao) intersect (codEmpDep4); % Produto cartesiano % Renomear atributos (WinRDBI nao diferencia atributos de tabelas diferentes) empRenom(empregado_codEmp,empregado_nome) := project codEmp,nomeEmp (empregado); exProd := (empRenom) product (dependente); % Juncao natural exJoin := (departamento) njoin (projeto);
Consultas
Expresse as consultas abaixo em álgebra relacional:
- Obter nomes de empregados com salario > 30000.
- Obter nomes de empregados que trabalham no projeto 'Transmogrifador'.
- Obter nomes e endereços de todos os empregados que trabalham no departamento de 'Pesquisa'.
- Obter códigos dos projetos do departamento 5.
- Obter códigos dos empregados que trabalham em projetos do departamento 5.
- Obter nomes dos empregados que trabalham em projetos do departamento 5.
- Obter nomes de empregados que não têm dependentes.
- Obter nomes de empregados sem dependentes que trabalham em projetos do departamento 5.
- Obter nomes de empregados que são do departamento 4 ou supervisionam diretamente um empregado do departamento 4.
Equivalências
Para os próximos exercícios, você pode criar uma nova base de dados simplificada.
- Expresse uma interseção usando apenas a operação de diferença.
- O WinRDBI não implementa a operação join genérica (theta join). Expresse essa operação usando operações fundamentais.
- Expresse a operação equi-join usando operações fundamentais.
- Estude a operação de divisão apresentada no Silberschatz, capítulo 3. Essa operação também é descrita na Wikipedia. Implemente uma divisão usando as operações oferecidas pelo WinRDBI.
Material
- WinRDBI User's Guide
Guia do usuário WinRDBI.