Você está na página 1de 20

CURSO SUPERIOR EM BACHARELADO

DE SISTEMAS DE INFORMAÇÃO

Equipe
Elizeu Amorim, Nailton Costa

PROJETO DE BANCO DE DADOS:


Pizzaria Nel Pizza

Vitória da Conquista-BA
Junho/2019
Equipe
Elizeu Amorim, Nailton Costa e Nathan Portela

PROJETO DE BANCO DE DADOS:


Pizzaria Nel Pizza

Trabalho apresentado ao Curso Superior em


Sistemas de Informação do Instituto Federal de
Educação, Ciência e Tecnologia da Bahia campus
Vitória da Conquista como requisito parcial para a
aprovação na disciplina Banco de Dados I.

Professor Orientador: Me. Pablo Freire Matos

Vitória da Conquista-BA
Junho/2019
HISTÓRICO DE PARTICIPAÇÃO

Período Participante Etapa Função


Todos Escrever a introdução e a descrição da
Analise de
empresa junto com o desenvolvimento do
Requisitos
minimundo
Todos Criar o esquema conceitual e as consultas que
03/04 a Modelagem
poderá ser feita a partir dele
16/05 conceitual
Todos Formatação e correção do trabalho
Correção

Todos Elaborar o mapeamento ER para o Relacional


Mapeamento

Todos Criar o esquema lógico com os tipos de dados


16/05 a
Esquema lógico no brModelo;
19/06
Todos Consultas em Elaboração das 10 consultas em Álgebra
Álgebra Relacional.
Relacional.
RESUMO

Neste trabalho está sendo moldado o banco de dados da empresa Nel Pizza, na qual não existe
um banco de dados implantado para manter o controle do negócio. A empresa é uma pizzaria
com foco em entregas, não atendendo clientes no estabelecimento. Atualmente todo o
controle de estoque de produtos é feito de forma analógica, fazendo o controle através de
anotações em cadernos, tanto de entrada e saída de pizzas quanto de entrada e saída de outros
produtos fornecidos. Não existe controle de clientes, nem maneira eficiente de analisar os
pedidos que foram feitos anteriormente.

Palavras-chave: Trabalho, banco de dados, pizzaria.


SUMÁRIO

1 INTRODUÇÃO............................................................................................................................4

1.1 CARACTERIZAÇÃO DA EMPRESA......................................................................................4

1.2 ENTREVISTA..............................................................................................................................5

2 DESCRIÇÃO DO MINUIMUNDO............................................................................................6

3 ESQUEMA CONCEITUAL..........................................................................................................7

4 ESQUEMA LÓGICO........................................................................................................8

4 .1 MAPEAMENTO ER-RELACIONAL..........................................................................................8

4.2 MODELO LÓGICO.......................................................................................................................9

4.3 CONSULTAS..................................................................................................................................9
4

1 INTRODUÇÃO
Hoje em dia não há dúvidas quanto à importância do manipulação e controle
eficiente de dados, tanto no meio empresarial quanto no acadêmico, pois a análise correta de
informações toma uma importância central na tomada de decisões, o que pode facilitar
amplamente a evolução de um empresa em qualquer ramo, é inimaginável conceber uma
grande empresa que não tenha pra si um sistema eficiente de banco de dados, e mesmo as
pequenas podem tomar muito proveito de uma implementação eficiente de banco de dados. .
Quem faz isso de maneira correta, sem dúvida sai na frente de seus concorrentes no mercado.
A computação surgiu com força no final da segunda guerra, pois nessa fase teve grandes
investimentos em tecnologia e estudos na área. Foi usando o computador (a máquina enigma)
que o código nazista foi quebrado, culminando assim a sua derrota. Isso é abordado no artigo
‘Alan Turing: da necessidade do cálculo, a máquina de Turing até à computação’, onde o
autor Pedro Ramos Brandão no início da abordagem que Turing teve papel decisivo na
segunda guerra com avanço da computação, a sua criação abstrata de inteligência artificial
’Desde então, essa área foi desenvolvendo cada vez mais, com os computadores,
sistemas operacionais, software, hardware.
Com o passar do tempo ficou evidente que não poderia ter todo um bom controle
a partir dos sistemas convencionais. De acordo com (Heuser, 2009) seguindo essa evolução
nos estudos de programação “foi assim que os sistemas de gerência de banco de dados
surgiram, na década de 1970 facilitando a programação de aplicações de banco de dados.” Os
bancos de dados são essenciais hoje em dia, já que é de extrema importância o bom
gerenciamento de informações. Nos diversos setores hoje em dia é feito o uso de bancos de
dados, seja em uma transação bancária ou em um mercado, todos esses tem atividades que
envolvem o uso de um software que gerencie esses dados. O banco de dados possibilita as
empresas gerir blocos grandes de informações que serão armazenadas em um mesmo local,
que poderá ser acessada de forma rápida e terá a integridade das informações controlada.
Este projeto tem o objetivo de lançar um estudo de caso, que será analisado o
funcionamento de uma pequena empresa que ainda não implantou um banco de dados para
controlar todas as suas operações, que até o momento é feito de forma manual.

1.1 Caracterização da Empresa


Empresa que terá o banco de dados implantado é uma pizzaria familiar com trabalho na
forma de home office, e com foco em entregas. Tem como dono um experiente padeiro e
pizzaiolo, e é gerenciada pelo próprio, que faz todo o controle de entrada e saída de estoque
5

através de anotações manuais. A empresa se chama Nel Pizza, localizado na avenida Ceará
2545, bairro Brasil. O banco fará todo o controle das operações da empresa, a partir das
necessidades mostradas pelo próprio dono através do levantamento de requisitos.

1.2 Entrevista
1. Como é feito hoje o controle de estoque?
O controle é feito manualmente, com as anotações feitas todas no caderno, desde a
entrada e saída, até o fechamento do caixa.
2. Quando sabe que está faltando algo?
Atualmente eu verifico olhando mesmo, todo começo de expediente vou observar o
que está acabando para poder fazer a compra de mais produtos e não ter falta.
3. Quem irá utilizar o programa?
Atualmente uma funcionária que trabalha comigo, fazendo controle de pedidos e eu
basicamente.
4. Se outra pessoa irá utilizar terá coisas que ela não poderá utilizar?
Somente o financeiro na questão de faturamento, acho que seria interessante não ser
aberto.
5. Como esse sistema facilitaria o controle da pizzaria?
Facilitaria, pois atualmente perco muito tempo anotando todas o controle na mão, e
como sou eu que faço tudo, desde as compras até a produção, adiantaria bastante o
serviço não tendo que fazer esse processo manualmente.
6. Quais os outros controles que teriam que ter esse programa?
Teria que ter um controle de pedidos que os clientes façam, para quando um cliente
fazer um pedido, já sair impresso no papel o pedido que o cliente fez?
7. Como funciona o controle de pedidos?
Atualmente a funcionário pega um pedido e anota em um papel e leva para deixar na
cozinha e eu faço a pizza. Após a pizza pronta fica separada para o motoboy pegar o
pedido e levar no endereço combinado e a depender do cliente verifica se é para levar
maquina de cartão ou dinheiro para troco.
8. Atualmente só atende por telefone?
Atualmente atendemos por telefone, WhatsApp e Facebook porém logo pretendo
aumentar e atender pedidos por aplicativos, por exemplo, o Ifood.
9. Quantos Funcionários têm na sua empresa atualmente?
Por enquanto é só uma pessoa para anotar os pedidos, eu que faço as pizzas e o
motoboy e o meu filho que ajuda o mesmo a fazer as entregas.
10. Como é feito o controle do caixa?
Hoje eu só anoto a entrada e saida do que eu fiz, por exemplo, anoto o que gastei nas
compras dos produtos e anoto as vendas feitas, tudo manualmente em um livro.
6

2 DESCRIÇÃO DO MINIMUNDO
A empresa Nel Pizza, pretende utilizar o banco de dados para controle de suas
atividades, desde a entrada de produtos até a saída das pizzas para a entrega. Para fazer as
pizzas, e desempenhar suas atividades a pizza conta com fornecedores, que além de fornecer
os ingredientes para a confecção das pizzas, também fornecem outros produtos que também
são vendidos junto com as pizzas, é o caso de bebidas como refrigerante e cerveja.
Um fornecedor fornece nenhum ou vários produtos e um produto é fornecido por
um ou vários fornecedores. Sobre o fornecedor fica registrado o seu nome e um código. Os
produto por sua vez, serão registrados também com um código, através do qual saber-se-á seu
valor de revenda, nome e data de validade. Na relação de fornecimento ficarão registrados a
quantidade fornecida, o custo unitário de cada produto e a data do fornecimento.
As pizzas ficam registradas com nome, tamanho, valor unitário, e código para
cada sabor. Os tamanho são enumerado como P, para pizza pequena, M para média, G para
grande, e F para tamanho Família.
O cliente realiza nenhum ou vários pedidos. Sobre o cliente fica armazenado o
CPF telefone, nome e endereço.
Cada pedido realizado pelo cliente tem um status (em andamento, concluído e
cancelado), data e hora do pedido, valor total, e a forma de pagamento (a vista, cartão). O
valor total de cada pedido deriva do valor das relações de compra de pizza, e compra de
produtos, onde ficam armazenado a quantidade de cada pizza ou produto comprado, o código
do produto ou pizza, e o código do pedido para o qual está sendo feita a compra. Cada compra
possui um pedido, e cada pedido pode possuir várias compras.
Os pedidos são registrados por um funcionário. O funcionário é identificado com
nome, matricula única, função, CPF e telefone. Assim que o pedido estiver pronto para a
entrega esta será efetuada por um entregador (nome, telefone e CPF) que faz a entrega de um
ou vários clientes de acordo com a demanda e na relação de entrega é registrado a hora em
que foi efetuada a tarefa, o CPF do entregador que realizou e a qual pedido a entrega se refere.
7

3 ESQUEMA CONCEITUAL
O esquema conceitual é uma representação abstrata que demonstra todas as
relações entre as entidades, suas especializações, atributos e relações. A partir da descrição do
minimundo foi possível a formulação do diagrama Entidade Relacionamento (DER).

Figura 1 - Modelo Conceitual .

Fonte: Autor(2019)

A partir do DER apresentado, pode-se ter uma ideia de algumas consultas possíveis, de
acordo com as necessidades da empresa:
 Qual produto mais vendido durante um período?
 Qual fornecedor oferece um preço mais acessível para o produto x?
 Consultar o valor do caixa da empresa
 Verificar se o balanço da empresa está positivo ou negativo
 Consultar a data de validade de certo produto, por exemplo, um refrigerante
 Qual o valor total de vendas em um dia ou durante um certo período?
 Qual a quantidade de um produto?
 Qual/quais cliente compraram mais produtos?
8

 Qual bairro possui maior número de clientes?


 Qual o horário que tem a demanda maior?

4 ESQUEMA LÓGICO

: O modelo lógico mostra as ligações entre as tabelas de banco de dados, as chaves


primárias, os componentes de cada uma. Neste esquema, as tabelas são as entidades, as
colunas são os atributos e a linhas são os dados.

4.1 Modelo Lógico


Figura 2 - Esquema Relacional

4.2 Mapeamento ER-Relacional

Pizza(cod_pizza, nome, tamanho, valor)


Produtos(cod_produto, nome, valor, validade)
Fornecedor(cod_fornecedor, nome)
fornece(data_hora_compra, cod_fornecedor, cod_produto, qtde, custo)
cod_fornecedor referencia Fornecedor
9

cod_produto referencia Produto

Cliente(cpf, nome, logradouro, bairro)


cliente_fone(cpf , fone)
cpf referencia Cliente
Funcionário(matrícula, funcionário_cpf, nome, função)
funcionário_fone(matricula, fone)
matricula referencia Funcionario
Entregador(cpf, nome)
entregador_fone(cpf, fone)
cpf referencia Entregador
Pedido (cod_pedido, cliente_cpf, matricula, valor, data_hora_pagamento, status,
forma_pagamento)
cliente_cpf referencia Cliente.cpf
matricula referencia Funcionário
compra_produto(qtde, cod_produito, cod_pedido)
cod_produto referencia Produto
cod_pedido referencia Pedido
compra_pizza(data_horario, produtos_cod_insumo, status, qtde, valor)
cod_pizza refencia Produto
cod_pedido referencia Pedido
entrega(data_hora_entrega, entregador_cpf, cod_pedido)
entregador_cpf referencia Entregador.cpf
cod_pedido referencia Pedido

5.0 Modelo Físico


Segue o script para criação do banco de dados de acordo com as descrições acima
apresentadas:

drop database if exists pizzaria;


create database pizzaria;
use pizzaria;

CREATE TABLE Cliente (


cpf varchar(11) PRIMARY KEY,
logradouro varchar(20),
bairro varchar(20),
10

nome varchar(30)
);

CREATE TABLE Fornecedor (


nome varchar(20),
cod_fornecedor int PRIMARY KEY
);

CREATE TABLE fornece (


qtde int,
custo float,
data_hora_compra datetime PRIMARY KEY,
cod_fornecedor int,
cod_produto int,
FOREIGN KEY(cod_fornecedor) REFERENCES Fornecedor (cod_fornecedor)
);

CREATE TABLE Pedido (


cod_pedido int PRIMARY KEY,
forma_pagamento enum('a_vista','cartao'),
status enum('cancelado','em_andamento','concluido'),
data_hora_pedido datetime,
valor_total_pedido float,
matricula int,
cliente_cpf varchar(11),
FOREIGN KEY(cliente_cpf) REFERENCES Cliente (cpf)
);

CREATE TABLE Entregador (


nome varchar(30),
cpf varchar(11) PRIMARY KEY
);

CREATE TABLE Pizza (


nome varchar(30),
tamanho enum('p','m','g','f'),
cod_pizza int PRIMARY KEY,
valor float
);

CREATE TABLE Funcionario (


nome varchar(30),
cpf varchar(11),
matricula int PRIMARY KEY,
funcao varchar(20)
);

CREATE TABLE entrega (


data_hora_entrega datetime PRIMARY KEY,
entregador_cpf varchar(11),
11

cod_pedido int,
FOREIGN KEY(entregador_cpf) REFERENCES Entregador (cpf),
FOREIGN KEY(cod_pedido) REFERENCES Pedido (cod_pedido)
);

CREATE TABLE Produto (


nome varchar(20),
validade date,
valor float,
cod_produto int PRIMARY KEY
);

CREATE TABLE cliente_fone (


fone varchar(11),
cpf varchar(11)
);

CREATE TABLE entregador_fone (


fone varchar(11),
cpf varchar(11)
);

CREATE TABLE funcionario_fone (


fone varchar(11),
matricula int
);

CREATE TABLE compra_produto (


qtde int,
cod_pedido int,
cod_produto int,
FOREIGN KEY(cod_pedido) REFERENCES Pedido (cod_pedido),
FOREIGN KEY(cod_produto) REFERENCES Produto (cod_produto)
);

CREATE TABLE compra_pizza (


qtde int,
cod_pedido int,
cod_pizza int,
FOREIGN KEY(cod_pedido) REFERENCES Pedido (cod_pedido),
FOREIGN KEY(cod_pizza) REFERENCES Pizza (cod_pizza)
);

ALTER TABLE fornece ADD FOREIGN KEY(cod_produto) REFERENCES Produto


(cod_produto);
ALTER TABLE Pedido ADD FOREIGN KEY(matricula) REFERENCES Funcionario
(matricula);
ALTER TABLE cliente_fone ADD FOREIGN KEY(cpf) REFERENCES Cliente (cpf);
ALTER TABLE entregador_fone ADD FOREIGN KEY(cpf) REFERENCES Entregador
(cpf);
12

ALTER TABLE funcionario_fone ADD FOREIGN KEY(matricula) REFERENCES


funcionario (matricula);
alter table fornece drop primary key, add primary key(data_hora_compra, cod_produto,

cod_fornecedor);

5.1 Povoamento
Segue o script necessário para o povoamento do banco de acordo com o modelo físico
criado acima:

insert into fornecedor (nome, cod_fornecedor) values ("Cola-Cola", 001);


insert into fornecedor (nome, cod_fornecedor) values ("AmBev", 002);

insert into produto (nome, validade, valor, cod_produto) values ("coca lata 350", '2022/12/31',
2.50, 111);
insert into produto (nome, validade, valor, cod_produto) values ("coca 1litro", '2022/12/31', 5,
112);
insert into produto (nome, validade, valor, cod_produto) values ("skol lata 350", '2021/06/20',
2.80, 113);

insert into fornece (qtde, custo, data_hora_compra, cod_produto, cod_fornecedor) values


(150, 2.50, CURDATE(), 111, 001);
insert into fornece (qtde, custo, data_hora_compra, cod_produto, cod_fornecedor) values (40,
5, CURDATE(), 112, 001);
insert into fornece (qtde, custo, data_hora_compra, cod_produto, cod_fornecedor) values (80,
2.50, CURDATE(), 113, 002);

insert into pizza (nome, tamanho, cod_pizza, valor) values ("calabresa",'p',11, 10);
insert into pizza (nome, tamanho, cod_pizza, valor) values ("calabresa",'m',12, 20);
insert into pizza (nome, tamanho, cod_pizza, valor) values ("calabresa",'g',13, 30);
insert into pizza (nome, tamanho, cod_pizza, valor) values ("calabresa",'f',14, 40);

insert into pizza (nome, tamanho, cod_pizza, valor) values ("portuguesa",'p',21, 10);
insert into pizza (nome, tamanho, cod_pizza, valor) values ("portuguesa",'m',22, 20);
insert into pizza (nome, tamanho, cod_pizza, valor) values ("portuguesa",'g',23, 30);
insert into pizza (nome, tamanho, cod_pizza, valor) values ("portuguesa",'f',24, 40);

insert into pizza (nome, tamanho, cod_pizza, valor) values ("nordestina",'p',31, 10);
insert into pizza (nome, tamanho, cod_pizza, valor) values ("nordestina",'m',32, 20);
insert into pizza (nome, tamanho, cod_pizza, valor) values ("nordestina",'g',33, 30);
insert into pizza (nome, tamanho, cod_pizza, valor) values ("nordestina",'f',34, 40);

insert into cliente (cpf, logradouro, bairro, nome) values ('11122233345', 'Av. Boa Vontade,
35', 'Brasil', 'Florisvaldo da Silva Peixoto');
insert into cliente (cpf, logradouro, bairro, nome) values ('55544433321', 'Av. Serrinha, 1235',
'Brasil', 'Cristiano Ronaldo dos Santos');
13

insert into cliente (cpf, logradouro, bairro, nome) values ('99988877765', 'Caminho IV, 07',
'Urbis II', 'Ronaldo Nazario de Lima');
insert into cliente (cpf, logradouro, bairro, nome) values ('12345678910', 'Rua Xique-Xique,
149', 'Patagônia', 'Romário de Souza Faria');
insert into cliente (cpf, logradouro, bairro, nome) values ('11223344556', 'Av. Rosa Cruz,
1021', 'Recreio', 'Didier Yves Drogba');

insert into cliente_fone (fone, cpf) values ('77988470122', '11122233345');


insert into cliente_fone (fone, cpf) values ('77940028922', '11223344556');
insert into cliente_fone (fone, cpf) values ('77988552935', '12345678910');

insert into entregador (nome, cpf) values ('Michael Joseph Jackson ', '14725836932');
insert into entregador (nome, cpf) values ('James Joseph Brown Jr', '36985214712');

insert into entregador_fone (fone, cpf) values (77991385505, '36985214712');


insert into entregador_fone (fone, cpf) values (77991018121, '14725836932');

insert into funcionario (nome, cpf, matricula, funcao) values ('Galvão Bueno Eduardo Santos'
, '45632178996', 114420, 'Atendente');
insert into funcionario_fone (fone, matricula) values ('77940011234', 114420);

insert into pedido (cod_pedido, forma_pagamento, status, data_hora_pedido, matricula,


cliente_cpf)
values (001, 'a_vista', 'concluido', '2019-07-22 19:02:35', 114420, 55544433321);

insert into compra_pizza (qtde, cod_pedido, cod_pizza) values (2,001,13);


insert into compra_produto (qtde, cod_pedido, cod_produto) values (1,001,112);
insert into compra_pizza (qtde, cod_pedido, cod_pizza) values (1,001,22);

update pedido set valor_total_pedido =


(select A.totalpizza + B.totalproduto from (select sum(A.valor * B.qtde) as 'totalpizza'
from pizza as A inner join
(select * from compra_pizza where cod_pedido = 001) as B on A.cod_pizza = B.cod_pizza)
as A,
(select sum(A.valor * B.qtde) as 'totalproduto'
from produto as A inner join
(select * from compra_produto where cod_pedido = 001) as B on A.cod_produto =
B.cod_produto) as B) where cod_pedido = 001;

insert into entrega(data_hora_entrega, entregador_cpf, cod_pedido) values ('2019-07-22


19:25:50', 14725836932, 001);

insert into pedido (cod_pedido, forma_pagamento, status, data_hora_pedido, matricula,


cliente_cpf)
values (002, 'a_vista', 'concluido', '2019-07-22 19:19:00', 114420, 11223344556);

insert into compra_pizza (qtde, cod_pedido, cod_pizza) values (1,002,34);


insert into compra_produto (qtde, cod_pedido, cod_produto) values (4,002,113);

update pedido set valor_total_pedido =


14

(select A.totalpizza + B.totalproduto from (select sum(A.valor * B.qtde) as 'totalpizza'


from pizza as A inner join
(select * from compra_pizza where cod_pedido = 002) as B on A.cod_pizza = B.cod_pizza)
as A,
(select sum(A.valor * B.qtde) as 'totalproduto'
from produto as A inner join
(select * from compra_produto where cod_pedido = 002) as B on A.cod_produto =
B.cod_produto) as B) where cod_pedido = 002;

insert into entrega(data_hora_entrega, entregador_cpf, cod_pedido) values ('2019-07-22


19:38:20', 14725836932, 002);

insert into pedido (cod_pedido, forma_pagamento, status, data_hora_pedido, matricula,


cliente_cpf)
values (003, 'cartao', 'concluido', '2019-07-22 19:36:00', 114420, 11122233345);

insert into compra_pizza (qtde, cod_pedido, cod_pizza) values (3,003,12);


insert into compra_pizza (qtde, cod_pedido, cod_pizza) values (1,003,22);
insert into compra_pizza (qtde, cod_pedido, cod_pizza) values (1,003,32);
insert into compra_produto (qtde, cod_pedido, cod_produto) values (5,003,111);

update pedido set valor_total_pedido =


(select A.totalpizza + B.totalproduto from (select sum(A.valor * B.qtde) as 'totalpizza'
from pizza as A inner join
(select * from compra_pizza where cod_pedido = 003) as B on A.cod_pizza = B.cod_pizza)
as A,
(select sum(A.valor * B.qtde) as 'totalproduto'
from produto as A inner join
(select * from compra_produto where cod_pedido = 003) as B on A.cod_produto =
B.cod_produto) as B) where cod_pedido = 003;

insert into entrega(data_hora_entrega, entregador_cpf, cod_pedido) values ('2019-07-22


19:51:13', 14725836932, 003);

insert into pedido (cod_pedido, forma_pagamento, status, data_hora_pedido, matricula,


cliente_cpf)
values (004, 'cartao', 'concluido', '2019-07-22 19:53:00', 114420, 99988877765);

insert into compra_pizza (qtde, cod_pedido, cod_pizza) values (5,004,12);


insert into compra_pizza (qtde, cod_pedido, cod_pizza) values (5,004,32);
insert into compra_produto (qtde, cod_pedido, cod_produto) values (10,004,113);

update pedido set valor_total_pedido =


(select A.totalpizza + B.totalproduto from (select sum(A.valor * B.qtde) as 'totalpizza'
from pizza as A inner join
(select * from compra_pizza where cod_pedido = 004) as B on A.cod_pizza = B.cod_pizza)
as A,
(select sum(A.valor * B.qtde) as 'totalproduto'
from produto as A inner join
15

(select * from compra_produto where cod_pedido = 004) as B on A.cod_produto =


B.cod_produto) as B) where cod_pedido = 004;

insert into entrega(data_hora_entrega, entregador_cpf, cod_pedido) values ('2019-07-22


20:20:00', 14725836932, 004);

insert into pedido (cod_pedido, forma_pagamento, status, data_hora_pedido, matricula,


cliente_cpf)
values (005, 'cartao', 'em_andamento', '2019-07-22 20:59:00', 114420, 12345678910);

insert into compra_pizza (qtde, cod_pedido, cod_pizza) values (1,005,24);


insert into compra_produto (qtde, cod_pedido, cod_produto) values (1,005,112);

update pedido set valor_total_pedido =


(select A.totalpizza + B.totalproduto from (select sum(A.valor * B.qtde) as 'totalpizza'
from pizza as A inner join
(select * from compra_pizza where cod_pedido = 005) as B on A.cod_pizza = B.cod_pizza)
as A,
(select sum(A.valor * B.qtde) as 'totalproduto'
from produto as A inner join
(select * from compra_produto where cod_pedido = 005) as B on A.cod_produto =
B.cod_produto) as B) where cod_pedido = 005;

6.0 Consultas

Algebra Relacional

1- Mostrar Validade do produto de código 111.


Π validade(σ cod_produto = 111)(Produtos)

2 – Mostrar quantidade em estoque do produto de código 111.


temp1<- Π qtde(σ cod_produto=111)(fornece)
temp2<- Π qtde(σ cod_produto=111)(compra_produto)
Π temp1.qtde – temp2.qtde (temp1 |X| temp2 )

3 – Mostrar quantas pizzas de código 32 tipo já foram compradas.


Sum qtde (Π qtde (σ cod_pizza=32(compra_pizza)))

4 – Mostrar pedidos feitos no dia 2019-07-22 e cujo status = ‘concluido’ .


Temp1<-(σ data_hora_pedido=’2019-07-22%’ (pedido))
Temp2 <-(σ status = ‘concluido’(pedido))
Π temp2.* (σ temp1.cod_pedido = temp2.cod_pedido(temp1 |X| temp2))

5 – Mostrar cpf e nome dos clientes que moram no bairro ‘Brasil’.


Π cpf, nome(σ bairro = "Brasil") (Cliente)

6 – Mostrar quantas produtos de código 113 tipo já foram comprados.


Sum qtde (Π qtde (σ cod_pizza=32(compra_pizza)))
16

7 – Consultar telefone dos clientes cujo primeiro nome é “Florisvaldo”.

temp1 <- Π cpf(σ nome="Florisvaldo")(Cliente)


Π fone (σ temp1.cpf = cliente_fone.cpf)(cliente_fone |X| temp1)

8 – Consultar nome e telefone de todos entregadores.


Π Entragador.nome, entregador_fone.fone(σ Entragador.cpf =
entregador_fone.cpf)(Entregador |X| entregador_fone)

9 – Consultar nome e telefone de todos funcionários.


Π funcionario.nome, funcionario_fone.fone(σ funcionario.matricula =
funcionario_fone.matricula)(Funcionario|X| funcionario_fone)

10 – Mostrar pedidos feitos no dia 2019-07-22 e cujo status = ‘em andamento’ .


Temp1<-(σ data_hora_pedido=’2019-07-22%’ (pedido))
Temp2 <-(σ status = ‘em_andamento’(pedido))
Π temp2.* (σ temp1.cod_pedido = temp2.cod_pedido(temp1 |X| temp2))

SQL

1- Mostrar Validade do produto de código 111.


select validade from produto where cod_produto = 111;

2 – Mostrar quantidade em estoque do produto de código 111.

select B.qtde - A.qtde


from (select qtde from compra_produto where cod_produto = 111) as A,
(select qtde from fornece where cod_produto = 111) as B;

3 – Mostrar quantas pizzas de código 32 tipo já foram compradas.


select sum(qtde)

from compra_pizza

where cod_pizza = 32;

4 – Mostrar pedidos feitos no dia 2019-07-22 e cujo status = ‘concluido’ .


select *

from pedido

where data_hora_pedido like '2019-07-22%'

and status = 'concluido';

5 – Mostrar cpf e nome dos clientes que moram no bairro ‘Brasil’.


select cpf, nome
17

from cliente

where bairro = 'brasil';

6 – Mostrar quantas produtos de código 113 tipo já foram comprados.


select sum(qtde)

from compra_produto

where cod_produto = 113;

7 – Consultar telefone dos cliente cujo primeiro nome é “Florisvaldo”.


Select B.fone

from (select cpf from cliente where nome like 'Florisvaldo%') as A

inner join cliente_fone as B

on A.cpf = B.cpf;

8 – Consultar nome e telefone de todos entregadores

Select A.nome, B.fone

from entregador as A,

entregador_fone as B

where A.cpf = B.cpf;

9 – Consultar nome e telefone de todos funcionários

Select A.nome, B.fone from funcionario as A,

funcionario_fone as B

where A.matricula = B.matricula;

10 – Mostrar pedidos feitos no dia 2019-07-22 e cujo status = ‘em andamento’ .


select *

from pedido

where data_hora_pedido like '2019-07-22%'

and status = 'em_andamento';


18

Referências bibliográficas:

BRANDAO, Pedro Ramos. Alan Turing: da necessidade do cálculo, a máquina de Turing


até à computação. Disponível em:
https://www.researchgate.net/publication/327535072_Alan_Turing_da_necessidade_do_calcu
lo_a_maquina_de_Turing_ate_a_computacao. Acesso em: 10 jul. 2019.

HEUSER, Carlos Alberto. Projeto de banco de dados. Editora Bookman, 6ª edição, 2009.