BD-I - Prof. Guilherme Tavares de Assis BD-I - Prof. Guilherme Tavares de Assis Exercício – Álgebra Relacional Exercício – Álgebra Relacional • Esquema relacional "Empresa": Empregado (PrimeiroNome, InicialMeio, UltimoNome, NumEmpregado, DataNascimento, Endereco, Sexo, Salario, NumSupervisor, NumDepto) Departamento (NomeDepto, NumDepto, NumGerente, DataInicioGerencia) Localizacao_Depto (NumDepart, Localizacao) Projeto (NomeProj, NumProj, Localizacao, NumDepto) Trabalha_em (NumEmpregado, NumProj, Horas) Dependente (NumEmpregado, NomeDependente, Sexo, DataAniversario, Parentesco) Empregado [NumSupervisor] {n} Empregado [NumEmpregado] Empregado [NumDepto] {b} Departamento [NumDepto] Departamento [NumGerente] {b} Empregado [NumEmpregado] Localizacao_Depto [NumDepart] {p} Departamento [NumDepto] Projeto [NumDepto] {b} Departamento [NumDepto] Trabalha_em [NumEmpregado] {p} Empregado [NumEmpregado] Trabalha_em [NumProj] {p} Projeto [NumProj] Dependente [NumEmpregado] {p} Empregado [NumEmpregado] 1. Recuperar o nome (primeiro e último nome) e o endereço dos empregados que trabalham para o departamento de número 5. R ← π PrimeiroNome,UltimoNome,Endereco (σ NumDepto=5 (Empregado)) 30 BD-I - Prof. Guilherme Tavares de Assis 31 BD-I - Prof. Guilherme Tavares de Assis Exercício – Álgebra Relacional Exercício – Álgebra Relacional 2. Recuperar o nome (primeiro e último nome) e o endereço dos empregados que trabalham para o departamento 'Pesquisa'. DepPesq ← σ NomeDepto = 'Pesquisa' (Departamento) R ← π PrimeiroNome,UltimoNome,Endereco (DepPesq ∗ Empregado) 3. Para cada projeto localizado no 'Centro', recuperar o número do projeto, o número do departamento controlador e o nome (primeiro e último nome), o endereço e a data de nascimento do gerente do departamento. ProjsCentro ← σ Localizacao = 'Centro' (Projeto) DepsProjs ← ProjsCentro ∗ Departamento GersDeps ← Empregado NumEmpregado=NumGerente DepsProjs R ← π NumProj,NumDepto,PrimeiroNome,UltimoNome,Endereco,DataNascimento (GersDeps) 32 33 BD-I - Prof. Guilherme Tavares de Assis BD-I - Prof. Guilherme Tavares de Assis Exercício – Álgebra Relacional Exercício – Álgebra Relacional 4. Recuperar o nome (primeiro e último nome) dos empregados que trabalham em todos os projetos controlados pelo departamento de número 5. ProjsDep5 ← π NumProj (σ NumDepto=5 (Projeto)) EmpsProjs ← π NumEmpregado,NumProj (Trabalha_em) EmpsProjsDep5 ← EmpsProjs ÷ ProjsDep5 R ← π PrimeiroNome,UltimoNome (EmpsProjsDep5 ∗ Empregado) 5. Recuperar o número dos projetos que envolvam um empregado cujo sobrenome seja 'Silva', como sendo um trabalhador ou como um gerente do departamento que controla o projeto. Silva ← π NumEmpregado (σ UltimoNome = 'Silva' (Empregado)) ProjsSilva ← π NumProj (Trabalha_em ∗ Silva) DepsGerSilva ← π NumDepto (Silva NumEmpregado=NumGerente Departamento) ProjsGerSilva ← π NumProj (DepsGerSilva ∗ Projeto) R ← ProjsSilva ∪ ProjsGerSilva 34 BD-I - Prof. Guilherme Tavares de Assis 35 BD-I - Prof. Guilherme Tavares de Assis Exercício – Álgebra Relacional Exercício – Álgebra Relacional 6. Recuperar o nome (primeiro e último nome) dos empregados que tenham dependentes. R ← π PrimeiroNome,UltimoNome (Empregado ∗ Dependente) 7. Recuperar o nome (primeiro e último nome) dos empregados que tenham dois ou mais dependentes. QteDepsEmps (NumEmpregado,QteDeps) ← NumEmpregado ℑ Count NomeDependente (Dependente) EmpsMais2Deps ← σ QteDeps ≥ 2 (QteDepsEmps) R ← π PrimeiroNome,UltimoNome (EmpsMais2Deps ∗ Empregado) 36 37 BD-I - Prof. Guilherme Tavares de Assis BD-I - Prof. Guilherme Tavares de Assis Exercício – Álgebra Relacional Exercício – Álgebra Relacional 8. Recuperar o nome (primeiro e último nome) dos empregados que não tenham dependentes. 9. Recuperar o nome (primeiro e último nome) dos gerentes que tenham dependentes. TodosEmps ← π NumEmpregado (Empregado) EmpsComDeps ← π NumEmpregado (Dependente) EmpsSemDeps ← TodosEmp – EmpsComDeps R ← π PrimeiroNome,UltimoNome (EmpsSemDeps ∗ Empregado) Gerentes (NumEmpregado) ← π NumGerente (Departamento) EmpsComDeps ← π NumEmpregado (Dependente) GersComDeps ← Gerentes ∩ EmpsComDeps R ← π PrimeiroNome,UltimoNome (GersComDeps ∗ Empregado) 38 39