.:: ELC119 - Fundamentos de Bancos de Dados ::.

Aluno: Lucas Antunes Tambara
Matrícula: 2710246
E-mail: ltambara@inf.ufsm.br
Disciplina: Fundamentos de Bancos de Dados (ELC119)
Semestre: 2/2008

.:: Consultas em álgebra relacional usando WinRDBI ::.

Eunciados: link.

Resolução:


-Obter nomes de empregados com salario > 30000:
project nomeEmp (select salarioEmp>30000 (empregado));

-Obter nomes de empregados que trabalham no projeto 'Transmogrifador'.
trabalhaEmProj := (trabalhaEm) njoin (projeto);
empTrasmo := project nomeEmp (select tituloProj='Transmogrifador' ((empregado) njoin (trabalhaEmProj)));

-Obter nomes e endereços de todos os empregados que trabalham no departamento de 'Pesquisa'.
empPesquisa := project nomeEmp, enderecoEmp (select nomeDepto='Pesquisa' ((empregado) njoin (departamento)));

-Obter códigos dos projetos do departamento 5.
codProjDepto5 := project codProj (select codDepto=5 (projeto));

-Obter códigos dos empregados que trabalham em projetos do departamento 5.
codProjDepto5 := project codProj (select codDepto=5 (projeto));
codEmpProjDepto5 := project codEmp ((trabalhaEm) njoin (codProjDepto5));

-Obter nomes dos empregados que trabalham em projetos do departamento 5.
codProjDepto5 := project codProj (select codDepto=5 (projeto));
codEmpProjDepto5 := project codEmp ((trabalhaEm) njoin (codProjDepto5));
nomeEmpProjDepto5 := project nomeEmp ((empregado) njoin (codEmpProjDepto5));

-Obter nomes de empregados que não têm dependentes.
empSemDependentes := project nomeEmp (empregado njoin ((project codEmp (empregado)) difference (project codEmp (dependente))));

-Obter nomes de empregados sem dependentes que trabalham em projetos do departamento 5.
empSemDependentes := project nomeEmp (select codDepto=5 (empregado njoin ((project codEmp (empregado)) difference (project codEmp (dependente)))));

-Obter nomes de empregados que são do departamento 4 ou supervisionam diretamente um empregado do departamento 4.
superv(codEmp) := project codSuperv (select codDepto=4 (empregado));
empSuperv := (superv) union (project codEmp (select codDepto=4 (empregado)));
emps :=project nomeEmp ((empregado) njoin (empSuperv));