algebra_relacional_andré

4
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))

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)