Você está na página 1de 8

1)

correntista (cpf, nome)

agencia (numAgen, nome)

conta (numCont, saldo, numAgen)


numAgen referencia Agencia

relacionamento (cpf, numCont)


Cpf referencia correntista
NumCont referencia conta

Corrente (numCont, limCheque)


NumCont referencia conta

Cheque (numcont, numcheque)


Numcont referencia corrente

Poupanca (numcont, juros, niver)


Numcont referencia conta

2)
CRIAÇÃO DA TABELA CLIENTE
CREATE TABLE IF NOT EXISTS prova2bd.cliente
(
codcli integer NOT NULL,
nome character varying(200) COLLATE pg_catalog."default" NOT NULL,
idade integer NOT NULL,
CONSTRAINT pk_cliente PRIMARY KEY (codcli)
)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS prova2bd.cliente


OWNER to postgres;

CRIAÇÃO DA TABELA PRODUTO

CREATE TABLE IF NOT EXISTS prova2bd.produto


(
codprod integer NOT NULL,
descricao character varying(200) COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT pk_codprod PRIMARY KEY (codprod)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS prova2bd.produto


OWNER to postgres;

CRIAÇÃO DA TABELA PEDIDO

CREATE TABLE IF NOT EXISTS prova2bd.pedido


(
codcliente integer NOT NULL,
numpedido integer NOT NULL,
data timestamp(6) without time zone NOT NULL,
CONSTRAINT pk_pedido PRIMARY KEY (numpedido),
CONSTRAINT pk_codcliente FOREIGN KEY (codcliente)
REFERENCES prova2bd.cliente (codcli) MATCH SIMPLE ON
UPDATE NO ACTION

ON DELETE NO ACTION
)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS prova2bd.pedido


OWNER to postgres;

CRIAÇÃO DA TABELA ITEMPEDIDO

CREATE TABLE IF NOT EXISTS prova2bd.itempedido


(

numped integer NOT NULL,


numitem integer NOT NULL,
codproducao integer NOT NULL,
quant integer NOT NULL,
precounid integer NOT NULL,
CONSTRAINT pk_id_itempedido PRIMARY KEY (numitem, numped),
CONSTRAINT fk_codproducao FOREIGN KEY (codproducao)
REFERENCES prova2bd.produto (codprod) MATCH SIMPLE ON
UPDATE NO ACTION

ON DELETE NO ACTION,
ON DELETE CASCADE
CONSTRAINT fk_numped FOREIGN KEY (numped)
REFERENCES prova2bd.pedido (numpedido) MATCH SIMPLE ON
UPDATE NO ACTION

ON DELETE NO ACTION
ON UPDATE CASCADE

TABLESPACE pg_default;

ALTER TABLE IF EXISTS prova2bd.itempedido


OWNER to postgres;

Escreva comandos SQL para incluir um novo pedido no banco de dados: Pedido
número 123, do cliente 02
INSERT INTO prova2bd.pedido(numpedido,codcliente) VALUES (123,2)

Os itens do pedido são: (a) 2 unidades do produto de código 02, custando 1,00 cada
unidade
INSERT INTO prova2bd.itempedido(numped,numitem,codproducao,quant, precounid)
VALUES (123,1,2,2,1.00);

(b) 3 unidades do produto de código 03, custando 2,30 cada unidade


INSERT INTO prova2bd.itempedido(numped,numitem,codproducao,quant, precounid)
VALUES (123,2,3,3,2.30);

Escreva um comando SQL para excluir todos os pedidos do cliente João da Silva.

DELETE FROM prova2bd.pedido p


WHERE p.codcliente IN (SELECT c.codcli
FROM prova2bd.cliente c
WHERE c.codcli = 'João da Silva');

Faça uma consulta SQL que seleciona os nomes dos clientes com mais de 30 anos
que fizeram algum pedido entre 01/01/2000 e 01/01/2002
SELECT c.nome
FROM prova2bd.cliente c
INNER JOIN prova2bd.pedido p
ON c.codcli = p.codcliente;
WHERE c.idade>30 AND p.data BETWEEN ‘2000/01/01’ AND ‘2002/01/01

Faça uma consulta SQL que retorna o valor total do pedido número 111.

SELECT SUM(i.quant *i.precounid)


FROM prova2bd.itempedido i
WHERE i.numpedido = 111;

Faça uma consulta SQL que retorna o nome do cliente e a descrição de produtos que
o cliente pediu em quantidade superior a 10 unidades.

SELECT c.nome, pr.descricao


FROM prova2bd.cliente c, prova2bd.produto pr
WHERE c.codcli IN (SELECT p.codcliente FROM prova2bd.pedido p
WHERE p.numpedido IN (SELECT i.numped FROM prova2bd.itempedido i
WHERE i.codproducao IN (SELECT pr.codprod FROM prova2bd.produto pr
WHERE pr.codprod IN (SELECT i.codproducao FROM prova2bd.itempedido i
WHERE i.quant > 10))));

Faça uma consulta SQL que retorne os nomes dos clientes que nunca fizeram
nenhum pedido

SELECT c.nome
FROM prova2bd.cliente c
WHERE c.codcli
NOT IN (SELECT p.codcliente FROM pedido p)

Faça uma consulta SQL que mostre o número do pedido, o código do produto e a
quantidade solicitada de produtos cuja descrição contenha a palavra “novidade”.
SELECT i.numped, i.codproducao, i.quant
FROM prova2bd.itempedido i

WHERE i.codproducao IN (SELECT pr.codprod

FROM prova2bd.produto pr

WHERE pr.descricao = ‘%novidade%’);

3)

PARTE 1
cliente
CodCli nome idade)

pedido
CodCli numPedido data

Primeira expressão algébrica:


R <- Cliente ⋈ pedido

Logo a tabela fiacaria:


R
CodCli nome idade numPedido data

Segunda expressão algébrica:


R’ <- Π nome (σ idade> 30 ^ data <= 01/01/2002 ^ data>=01/01/2000 (R))

PARTE 2
Expressão algébrica: A’ <- π nome (σ numPedido = 0 (R’))
PARTE 3
ItemPedido
numPedido numItem CodProd Quant PrecoUnit

produto
CodProd descricao

Expressão algébrica: B’ <- Π descricao (ItemPedido ⋈ produto)

Logo a tabela fiacaria:

ItemPedido ⋈ produto
numPedido numItem CodProd, Quant PrecoUnit descricao

4)

1FN -> R(A, B, C)


As tuplas possíveis seriam (1,2,2) e (-1,0,-2), já que 1 (valor de A) * 2 = 2 (valor de C), bem
como -1(valor de A) * 2 = - 2 (valor de C), o que mostra A→C são dependências funcionais de
R. Além disso, 1(valor de A) + 1 = 2 (valor de B) e -1(valor de A) + 1 = 0 (valor de B) ), o que
mostra A→B são dependências funcionais de R. No entanto, se analisarmos B->C, veremos
que na primeira tupla 2(valor de B) = 2 (valor de C) e na segunda tupla 0 (valor de B) ≠ -2
(valor de C), logo é possível notar que não necessariamente B→C também é uma
dependência funcional de R.
5)

A
X 1

X 2

X 3

Y 1
Y 2

Y 4

Z 1

Z 3

Z 4

W 2

W 3

W 4

B
2

A/B
y

O conteúdo da relação B é {(2),(4)}

6)

SELECT c.nome
FROM clientes.c
WHERE c.nome LIKE ‘_%CARDOSO%’ AND ‘ %OLIVEIRA’

Você também pode gostar