algebra_relacional_andré
Transcript of algebra_relacional_andré
Cursos: Análise e Des. De Sist., Ciência da Computação e Sistemas de Informação Prof. Gilberto Irajá Müller
Banco de Dados I 2009/1 – Respostas Exercícios Álgebra Relacional
1. Baseado no modelo físico abaixo desenvolva a consulta em Álgebra Relacional.
a. Selecionar os doentes da cidade de Novo Hamburgo. σcidade = ‘Novo Hamburgo’(paciente)
b. Selecionar os nomes dos médicos do Hospital Regina.
πnomeMedico(σhospital = ‘Hospital Regina’(medico)) c. Selecionar as datas das consultas do médico Lula.
πdata(σmedico.idMedico = consulta.idMedico ∧ nomeMedico = ‘Lula’(medico x consulta)) Utilizando junção: πdata(σnomeMedico = ‘Lula’(medico |x| consulta))
d. Selecionar as datas das consultas, o nome do médico e do hospital, da paciente Dilma Rousseff. πdata, nomeMedico, hospital(σnomePaciente = ‘Dilma Rousseff’(paciente |x| consulta |x| medico))
e. Selecionar os nomes dos remédios já prescritos pelo médico Lula.
πnomeMedicamento(σnomeMedico = ‘Lula’(medico |x| consulta |x| receita)) f. Selecionar os nomes dos pacientes da cidade de Porto Alegre, exceto os que
já se consultaram com o médico José Alencar. πnomePaciente(σcidade=’Porto Alegre’(paciente)) - πnomePaciente(σnomeMedico = ‘José
Alencar’(paciente |x| consulta |x| medico)) g. Selecionar os nomes dos médicos que realizaram consultas antes de
04/05/2009 ou que são do Hospital das Clínicas. πnomeMedico(σdata < ‘04/05/2009’ (medico |x| consulta)) ∪ πnomeMedico(σhospital = ‘Hospital
das Clínicas’(medico))
Cursos: Análise e Des. De Sist., Ciência da Computação e Sistemas de Informação Prof. Gilberto Irajá Müller
Banco de Dados I 2009/1 – Respostas Exercícios Álgebra Relacional
h. Selecione o número de médicos do hospital Centenário.
count idMedico (σhospital = ‘Hospital Centenário’(medico)) i. Selecione a quantidade de doentes por cidade.
cidade G count idPaciente (paciente)
j. Selecionar a maior data de consulta do médico José Alencar. max data (σ nomeMedico = ‘José Alencar’(medico |x| consulta))
2. Baseado no modelo físico abaixo desenvolva a consulta em Álgebra Relacional.
Consultas básicas a. Encontrar os clientes do estado do RS.
σestado = ‘RS’(cliente)
b. Encontrar as vendas com valor entre 500 e 2000. σvalorNota >= 500 ∧ valorNota <= 2000(notaFiscal)
c. Quais as vendas realizadas entre 01/01/2009 e 30/01/2009.
σdataEmissao >= 500 ∧ dataEmissao <= 2000(notaFiscal)
d. Quais os valores das vendas de 30/03/2009. πvalorNota(σdataEmissao = ‘30/03/2009’(notaFiscal))
e. Quais os produtos com preço unitário menor que R$ 1,00. σprecoUnitario < 1(produto)
f. Encontrar o nome dos clientes que moram em Novo Hamburgo ou Porto Alegre.
πnomeCliente(σcidade = ‘Novo Hamburgo’ ∨ cidade = ‘Porto Alegre’(cliente))
Cursos: Análise e Des. De Sist., Ciência da Computação e Sistemas de Informação Prof. Gilberto Irajá Müller
Banco de Dados I 2009/1 – Respostas Exercícios Álgebra Relacional
g. Encontrar o id, nome fantasia e telefone dos fornecedores. πidFornecedor, nomeFantasia, telefone(fornecedor)
h. Encontrar o código do produto dos itens com qtdeItem maior que 10 da NF
1501. πidProduto(σqtdeItem > 10 ∧ numeroNota = 1501(itemNota))
i. Encontrar a descrição dos produtos com preço unitário menor que 10 ou maior
que 40. πnomeProduto(σprecoUnitario < 10 ∨ precoUnitario > 40(produto))
j. Encontrar a NF e a data das vendas com valores entre R$ 1000,00 e R$
2000,00. πnumeroNota, dataEmissao(σvalorNota >= 1000 ∧ valorNota <= 2000(nota))
Operador cartesiano
k. Obter nome dos clientes e a data em que realizaram compras. πnomeCliente, dataEmissao(σcliente.idCliente = nota.idCliente(cliente x nota))
l. Obter o estado dos clientes que realizaram compras com valor acima de R$
5000,00. πestado(σcliente.idCliente = nota.idCliente ∧ valorNota > 5000 (cliente x nota))
m. Obter o nome do cliente e as quantidades de itens comprados na NF 100.
πnomeCliente, qtdeItem(σcliente.idCliente = nota.idCliente ∧ itemNota.numeroNota = nota.numeroNota ∧ nota.numeroNota
= 100(cliente x nota x itemNota))
n. Obter o código e descrição dos produtos já comprados pelos clientes do estado do RS. πproduto.idProduto, descrição(σcliente.idCliente = nota.idCliente ∧ itemNota.numNota = nota.numNota
∧ produto.idProduto = itemNota.idProduto ∧ cliente.estado = ‘RS’ (cliente x nota x itemNota x produto))
o. Obter o código do produto e o preço unitário dos clientes de Novo Hamburgo
que fizeram compras abaixo de 500. πproduto.idProduto, precoUnitario(σcliente.idCliente = nota.idCliente ∧ itemNota.numeroNota = nota.numeroNota ∧
produto.idProduto = itemNota.idProduto ∧ cliente.cidade = ‘Novo Hamburgo’ ∧ nota.valorNota < 500 (cliente x nota x itemNota x produto))
p. Obter a cidade dos clientes que já compraram do fornecedor de nomeFantasia “G & C Engenharia”. πcidade(σcliente.idCliente = nota.idCliente ∧ itemNota.numeroNota = nota.numeroNota ∧ produto.idProduto =
itemNota.idProduto ∧ fornecedor.idFornecedor = produto.idFornecedor ∧ fornecedor.nomeFantasia = ‘G & C Engenharia’ (cliente x nota x itemNota x produto x fornecedor))
q. Obter os valores das vendas que continham produtos do fornecedor de razão
social “G & C Engenharia”.
Cursos: Análise e Des. De Sist., Ciência da Computação e Sistemas de Informação Prof. Gilberto Irajá Müller
Banco de Dados I 2009/1 – Respostas Exercícios Álgebra Relacional
πvalorNota(σitemNota.numeroNota = nota.numeroNota ∧ produto.idProduto = itemNota.idProduto ∧
fornecedor.idFornecedor = produto.idFornecedor ∧ fornecedor.razaoSocial = ‘G & C Engenharia’ (nota x itemNota x produto x fornecedor))
Funções agregadas
r. Obter o valor da maior venda. max valorNota (nota)
s. Obter o valor médio das vendas. avg valorNota (nota)
t. Obter o valor da menor venda. min valorNota (nota)
u. Obter a soma de valores das vendas.
sum valorNota (nota)
v. Obter a média de preços unitários dos produtos. avg precoUnitario (produto)
w. Obter o valor médio das vendas dos clientes da cidade de Novo Hamburgo.
avg valorNota (σcliente.idCliente = nota.idCliente ∧ cidade = ‘Novo Hamburgo’(cliente x nota)) x. Obter o menor valor das vendas por cidade.
cidade G min valorNota (σcliente.idCliente = nota.idCliente(cliente x nota)) y. Obter o menor valor das vendas por estado.
estado G min valorNota (σcliente.idCliente = nota.idCliente(cliente x nota))
z. Obter o menor preço unitário dos produtos por id de fornecedor. idFornecedor G min precoUnitario (produto)
Inclusão, Alteração e Exclusão
aa. Incluir um novo fornecedor (id = 100). fornecedor ← fornecedor ∪ {(100, ‘Fornecedor número 100’, ‘Fornec 100’, ‘3333-4455’)}
bb. Alterar o nome fantasia do fornecedor (id = 100).
fornecedor ← πidFornecedor, razaoSocial, nomeFantasia ← ‘Fornecedor 100...’, telefone (σidFornecedor =
100(fornecedor)) cc. Excluir o fornecedor (id = 100).
fornecedor ← fornecedor - σidFornecedor = 100(fornecedor)