Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
CURSO: SISTEMAS DE INFORMAÇÃO DISCIPLINA: BANCO DE DADOS I PROFESSOR: DANIEL SCHNEIDER PERÍODO: 2012.1 DOCUMENTO: LISTA #4 DE EXERCÍCIOS - GABARITO Q1 Álgebra Relacional e SQL Questão 1) Considere o seguinte esquema relacional: VOO(VID, ORIGEM, DESTINO, DISTANCIA, HSAIDA, HCHEGADA) AVIAO(AID, NOME, FAIXA_COBERTA) CERTIFICADO(EID, AID) EMPREGADO(EID, NOME, SALARIO) Observe que a tabela EMPREGADO descreve pilotos e outros tipos de empregado. Todo piloto é certificado para algum avião, e somente os pilotos são certificados para voar. Escreva as consultas abaixo em Álgebra Relacional: (algumas podem não ter solução em AR) 1) Listar o código dos pilotos certificados para algum avião 'Boeing'. π eid (σ nome=‘Boeing’ (AVIAO ⊳⊲ CERTIFICADO) 2) Listar o nome dos pilotos certificados para algum avião 'Boeing'. π empregado.nome (σ aviao.nome=‘Boeing’ (AVIAO ⊳⊲ CERTIFICADO ⊳⊲ EMPREGADO)) 3) Listar o código de todos os aviões que podem ser usados em vôos (sem parada) entre Salvador e Natal. R1 ← σ origem=‘Salvador’ ∧ destino=‘Natal’ (VOO)) R ← π aid (σ faixa_coberta>distancia (AVIAO × R1)) 4) Selecionar os vôos que podem ser pilotados por todo piloto cujo salário é maior que R$ 5000. π vid (σ distancia<faixa_coberta ∧salario>5000 (VOO ⊳⊲ AVIAO ⊳⊲ CERTIFICADO ⊳⊲ EMPREGADO))) 5) Encontrar o nome dos pilotos que podem operar aviões com uma faixa coberta maior que 3000 milhas mas que não sejam certificados para nenhum avião 'Boeing'. R1 ← π eid (σ faixa_coberta>3000 (AVIAO ⊳⊲ CERTIFICADO))) R ←π empregado.nome (EMPREGADO ⊳⊲ (R1 − π eid (σ aviao.nome=‘Boeing’ (AVIAO ⊳⊲ CERTIFICADO)))) 6) Encontrar o código dos empregados que recebem o maior salário. A estratégia é primeiro encontrar todos os empregados que não possuem o maior salário. Substraia essa lista da lista original (completa) dos empregados, e o que restará serão os empregados com o maior salário. E1 ← EMPREGADO E2 ← EMPREGADO E3 ← π E2.eid ( σ E1.salary>E2.salary (E1 x E2) ) R ← (π eid (E1)) − E3 7) Encontrar o código dos empregados que recebem o segundo maior salário. A estratégia é semelhante à do exercício anterior. Primeiro encontramos todos os empregados que não possuem o maior salário. Remova estes empregados da lista original de empregados e o que sobra é a lista dos empregados com o maior salário. Remova em seguida a lista dos empregados mais bem pagos da lista original de empregados, e o que sobra é a lista dos empregados que recebem o segundo melhor salário juntamente com o resto dos empregados. Finalmente encontre a lista dos empregados mais bem pagos dessa nova lista. O resultado será a lista dos empregados com o segundo maior salário. E1 ← EMPREGADO E2 ← EMPREGADO E3 ← π E2.eid ( σ E1.salario>E2.salario (E1 x E2) ) E4 ← E2 ⊳⊲ E3 E5 ← E2 ⊳⊲ E3 E6 ← π E5.eid ( σ E4.salario>E5.salario (E4 x E5) ) R ← (π eid (E3)) − E6 8) Encontrar o código dos pilotos certificados para o maior número de aviões. Esta consulta não pode ser expressa em álgebra relacional porque não existe um operador COUNT disponível! 9) Encontrar o código dos pilotos certificados para exatamente três aviões. ANULADA 10) Encontrar o código dos empregados que não são pilotos. π eid (EMPREGADO) - π eid (CERTIFICADO)