banco de dados - 4º slide

108
Modelo Relacional e a Álgebra Relacional Maria Salete Marcon Gomes Vaz

Upload: api-3813652

Post on 14-Nov-2014

129 views

Category:

Documents


1 download

DESCRIPTION

Modelo Relacional e Algebra Relacional

TRANSCRIPT

Page 1: Banco de Dados - 4º Slide

Modelo Relacional e a Álgebra Relacional

Maria Salete Marcon Gomes Vaz

Page 2: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

2

Modelo Relacional

Estrutura de Banco de Dados Relacional

Operações Fundamentais da Álgebra Relacional

Operações Adicionais da Álgebra Relacional

Operações Estendidas da Álgebra Relacional

Valores Nulos

Modificação do Banco de Dados

Page 3: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

3

Modelo Relacional

Definido por E. F. Cood em 1970

Grande aceitação comercial a partir de meados da década de 1980

Razões da grande aceitação:

Simplicidade dos conceitos básicos

Poder dos operadores de manipulação

Page 4: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

4

Modelo Relacional

Estruturas

Relação

Atributo

Domínio

Chave Primária

Chave Estrangeira

Operadores

União

Interseção

Diferença

Seleção

Projeção

Junção

Divisão

Restrições

Integridade de Domínio

Integridade de Entidade

Integridade Referencial

Page 5: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

5

Estrutura BásicaDados os conjuntos D1, D2, …. Dn uma relação r é um subconjunto de D1 x D2 x …

x Dn e corresponde a um conjunto de n-tuplas (a1, a2, …, an) onde cada ai Di

Atributo

Explicita o papel de um domínio em uma relação

Os atributos de uma mesma relação devem ser diferentes

Um (ou vários) atributos identificam uma relação: Chave Primária

Chave Candidata

Uma relação pode ter mais de um atributo como identificador único

Um deles é chave primária e os outros são chaves candidatas

Chave Estrangeira

Um atributo que corresponde a uma chave primária em outra relação

Tupla

É uma n upla <a1, a2, ..., an> de uma relação R(D1, ..., Dn) tal que ai pertence a Di

(1 <= i <= n)

Page 6: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

6

Modelo Relacional Chave

Primária

Num-pil Nome CPF Endereço

0101 João 12345 Recife

0035 José 234567 Castro...

0987 Pedro 567489 Curitiba

Atributos

Tuplas

Chave Candidata

PILOTO

Page 7: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

7

Num-vôo ... Num-pil ...

.

.

.

330 ... 0101 ......

Chave Estrangeira

VÔO

Modelo Relacional

Page 8: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

8

Tipos de Atributos Domínio

D1, D2, ..., Dn são Domínios

n é o grau de R

representa o conjunto de valores atômicos admissíveis dos atributos

Definição: todo valor de uma n upla pertence a D

Manipulação: 2 valores só podem ser comparados se definidos sobre o mesmo domínio D.

Exemplo: D FONE: inteiro dupla: <d1, d2>, grau = 2 tripla: <d1, d2, d3>, grau = 3 ... n upla: < d1, d2, ... dn>, grau = n

Page 9: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

9

Tipos de Atributos

Valores de Atributo são (normalmente) requeridos para ser atômicos; isto é, indivisível

Nota 1: Valores de atributo multivalorados são não atômicos

Nota 2: Valores de atributo composto são não atômicos

O valor especial nulo é um membro de todo domínio

O valor nulo causa complicações na definição de muitas operações

Page 10: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

10

Esquema de Relação

A1, A2, …, An são atributos

R = (A1, A2, …, An ) é um esquema de relação

Exemplo:

Esquema_Cliente = (código, nome, endereço)

r(R) é uma relação no esquema relação R

Exemplo:

Cliente (Esquema_Cliente)

Page 11: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

11

Esquema Relacional

Conjunto de relações semanticamente ligadas por seus domínios de

definição O conceito de relação permite ao mesmo tempo representar:

uma entidade

uma relação semântica (relacionamento)

Restrições de Integridade De Domínio: diz respeito ao controle sintático e semântico de um dado e faz referência ao tipo de definição do domínio.

De Entidade: valores de chave primária devem ser únicos e não nulos

Referencial: valores de um atributo chave estrangeira e os valores do atributo chave primária devem ser correspondentes

Modelo Relacional

Page 12: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

12

Relações são não ordenadas Ordem das tuplas é irrelevante - podem ser armazenadas em uma ordem arbitrária

Exemplo: relação Conta com tuplas não ordenadas

numc Coda saldo

A-101 03 500

A-215 01 700

A-102 02 400

A-305 04 350

A-201 03 900

A-222 01 700

A-217 02 750

Page 13: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

13

Banco de DadosUm banco de dados consiste de múltiplas relações

Informação a respeito de um empreendimento é dividido em partes, com cada relação armazenando uma parte da informação

Conta: armazena informação a respeito de contasCliente_Conta: armazena informação a respeito dos clientes e sua(s) conta(s)Cliente: armazena informação a respeito de clientes

Armazena toda informação como uma simples relação tal como Cliente_Conta(numc, saldo, codc, ..)resulta em

Repetição de informação

Por exemplo, dois clientes podem ser proprietários de uma conta

A necessidade de valores nulos

Por exemplo: representa um cliente sem uma conta

Teoria de normalização trata como projetar esquemas relacionais

Page 14: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

14

Relações Cliente e Cliente_Conta

codc nome

01 Salete

02 José

03 Francisco

04 Ronaldo

05 Marise

06 Rafaela

07 Sandra

08 Renata

Cliente

codc numc

01 A-215

02 A-102

03 A-305

04 A-201

05 A-222

06 A-217

07 A-215

08 A-101

Cliente_Conta

Page 15: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

15

ChavesDado K RK é uma superchave de R se valores para K são suficientes para identificar uma única tupla de cada relação possível r(R)

por “possível r ” significa que uma relação r que pode existir na aplicação modelada

Exemplo: {codc,numc} e

{codc}

são ambas superchaves de Cliente, se dois clientes não ter o mesmo

código

K é uma chave candidata se K é mínima

Exemplo: {cpf} é uma chave candidata para Cliente, visto que é uma

superchave (assumindo que dois cliente não podem ter o mesmo cpf), e

nenhum subconjunto é uma superchave

Chave Primária

Page 16: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

16

Linguagens de ConsultaLinguagem na qual usuários requerem informações de um banco de dados

Categorias de linguagensProceduralNão-procedural ou declarativa

Linguagens “Puras”:Álgebra RelacionalCálculo Relacional de TuplasCálculo Relacional de Domínio

Linguagens puras formam a base das linguagens de consulta que as pessoas utilizam

Page 17: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

17

Proposta por Ed. CoddBaseada na Teoria dos ConjuntosÉ o fundamento teórico da Linguagem SQL

Operadores - Primários (necessitam de uma única relação)- Binários (necessitam de duas relações)Operadores FundamentaisPrimários: Projeção, Seleção e RenomeaçãoBinários: Diferença, Produto e UniãoOperadores Adicionais - Binários- Interseção- Junção- Divisão

Álgebra Relacional

Page 18: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

18

Álgebra Relacional

Linguagens Procedurais

Seis operadores básicos

Seleção: Projeção: União: Diferença: –

Produto Cartesiano: x

Renomeação: Os operadores atuam em uma ou duas relações como entradas e produz uma nova relação com resultado

Page 19: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

19

Operação Seleção – Exemplo Relação r

A B C D

1

5

12

23

7

7

3

10

A=B ^ D > 5 (r)A B C D

1

23

7

10

Page 20: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

20

Operação SeleçãoNotação: p(r)p é chamado predicado de seleçãoDefinida como:

p(r) = {t | t r p(t)}

onde p é uma fórmula em cálculo proposicional consistindo de termos conectados por : (and), (or), (not)Cada termo é:

<atributo> op <atributo> ou <constante> onde op é: =, , >, . <.

Exemplo de seleção: coda= 01 (Conta)

Page 21: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

21

Operação SeleçãoQuais as cidades do Paraná?

σ cod_uf = ‘PR’ (cidade)Select *From cidadeWhere cod_uf = ‘PR’

Qual o nome das cidades do Paraná?

Select nome From cidade Where cod_uf = ‘PR’

σ cod_uf = ‘PR’ (cidade)( )¶ nome

Page 22: Banco de Dados - 4º Slide

Quais as cidades do Paraná?

Operação Seleção

σ cod_uf = ‘PR’ (cidade)select *from cidadewhere cod_uf = ‘PR’

Qual o nome das cidades do Paraná?

Select nome from cidade where cod_uf = ‘PR’

σ cod_uf = ‘PR’ (cidade)( )¶ nome

Page 23: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

23

Operação Projeção Relação r:

A B C

10

20

30

40

1

1

1

2

A C

1

1

1

2

=

A C

1

1

2

A,C (r)

Page 24: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

24

Operação Projeção

Notação:

onde A1, A2 são nomes de atributos e r é um nome de relação

O resultado é definido com a relação de k colunas obtidas pela exclusão de colunas que não estão listadas

Linhas duplicadas são removidas do resultado, visto que relações são conjuntos

Exemplo: Para eliminar o atributo coda de Conta

codc, saldo (Conta)

)( ,,, 21r

kAAA

Page 25: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

25

Operação ProjeçãoDefine quais os atributos (colunas) de uma relação são desejáveis

Exemplo 1: Qual o código das pessoas?

cod (pessoa)

Exemplo 2: Qual o código e nome das pessoas?

cod, nome (pessoa)

Select cod, nome from pessoa;

Select cod from pessoa;

Page 26: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

26

Operações Seleção e Projeção

Num-pil Nome CPF Endereço

0101 João 12345 Recife

0035 José 234567 Castro...

0987 Pedro 567489 Curitiba

PILOTO

Seleção

Projeção

Page 27: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

27

Operação União Relações r, s:

r s:

A B

1

2

1

A B

2

3

r s

A B

1

2

1

3

A união de duas relações r e s é composta de todas as linhas que pertencem a r ou s

1

1

2

2

3

3

4

4

AA

AA

AB

AE

AC

AF

AD

AG

BA

BA

BB

BE

BC

BF

BD

BG

CA

CA

CB

CE

CC

CF

DD

1

2

3

4

AA

AB

AC

AD

BA

BB

BC

BD

CA

CB

CC

DD

DG

2

3

4

AE

AF

AG

BE

BF

BG

CE

CF

DG

UNIÃO

Page 28: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

28

Operação UniãoNotação: r s

Definida como:

r s = {t | t r t s}

Para r s ser válida:

1. r, s deve ter a mesma aridade - mesmo número de atributos

2. Os domínios de atributos devem ser compatíveis

Exemplo: 2n colunas de r tem o mesmo tipo de valores com as 2nd colunas de s

Exemplo: para obter todos os clientes, com uma conta ou um

empréstimo

codc (Cliente_Conta) codc (Cliente_Empréstimo)

Page 29: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

29

Operação Diferença Relações r, s:

A B

1

2

1

A B

2

3

rs

A B

1

1

A diferença entre de duas relações r e s é composta de todas as linhas que pertencem a r e não pertencem a s

Page 30: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

30

Operação Diferença

Notação r – s

Definida como:

r – s = {t | t r t s}

Operação diferença deve ocorrer entre relações compatíveis

r e s devem ter a mesma aridade

Domínio dos atributos de r e s devem ser compatíveis

Page 31: Banco de Dados - 4º Slide

Operação DiferençaR1 R2 R1 - R2 = {4}

R2 - R1 = {2,6}

134

1236 1

1

2

2

2

3

3

3

4

4

4

A A

A A

A B

A B

A E

A C

A C

A F

A D

A D

A G

B A

B A

B B

B B

B E

B C

B C

B F

B D

B D

B G

C A

C A

C B

C B

C E

C C

C C

C F

D D

D D

D G

D IF E R E N Ç A

Page 32: Banco de Dados - 4º Slide

Operação Diferença

Obter todas as pessoas que nunca locaram qualquer veículo

¶ cod_pessoa (pessoa) - ¶ cod_cliente (locacao) Select cod_pessoa from pessoaminusSelect cod_cliente from locacao;

Select cod_pessoa From pessoa Where cod_pessoa not in (Select cod_cliente From locacao);

Page 33: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

33

Operação Produto Cartesiano Relações r, s:

r x s:

A B

1

2

A B

11112222

C D

1010201010102010

E

aabbaabb

C D

10102010

E

aabbr

s

Page 34: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

34

Operação Produto CartesianoNotação r x s

Definida como:

r x s = {t q | t r q s}

Assume que atributos de r(R) e s(S) são disjuntos

R S =

Se atributos de r(R) e s(S) não são disjuntos então a renomeação deve ser usada

Page 35: Banco de Dados - 4º Slide

R1 R2 R3

X

Operação Produto Cartesiano

1234

ABC

111222...

ABCABC...

Page 36: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

36

Obter o produto cartesiano entre as relações VEÍCULO e MODELO Operação Produto Cartesiano

cod_modelocod_grupo (FK)descricao

Veículo

placacod_modelo (FK)data_aquisicaochassiscod_filial (FK)data_entrada

Modelo

Veículo(placa,cod_modelo,data_aquisicao,chassis,codfilial,data_entrada)

Modelo(cod_modelo, cod_grupo,descricao)

veiculo X modelo Select * From veiculo, modelo;

Page 37: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

37

Operação Produto CartesianoCriar uma relação com o produto cartesiano entre as relações VEÍCULO e MODELO onde o veiculo.cod_modelo=10

cod_modelocod_grupo (FK)descricao

Veículo

placacod_modelo (FK)data_aquisicaochassiscod_filial (FK)data_entrada

Modelo

σ veiculo.cod_modelo=10 (veiculo x modelo)

Select * From veiculo, modelo where veiculo.cod_modelo=10

Page 38: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

38

Composição de OperaçõesPode construir expressões usando múltiplas operações

Exemplo: A=C(r x s)

r x s A=C(r x s)

A B

11112222

C D

1010201010102010

E

aabbaabb

A B C D E

122

101020

aab

A

Page 39: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

39

Operação de RenomeaçãoPermite nomear e referenciar os resultados da expressão da álgebra relacional

Permite referenciar uma relação por mais que um nome

Exemplo:

x (E)

retorna a expressão E de nome X

Se uma expressão da álgebra relacional E tem aridade n, então

retorna o resultado da expressão E de nome X, e com os

atributos renomeados A1 , A2 , …., An .

)(),...,,( 21E

nAAAx

Page 40: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

40

Operação RenomeaçãoCriar uma relação com todas as colunas da tabela UF

Unidade_Federacao(descricao) (¶ nome (UF))

Criar uma relação com descrição, diária e 70% da diária

Select descricao grupo, diaria valor_base, (diaria * 0.7) valor_descontoFrom Grupo Tabela_Preco;

Tabela_Preco(grupo,valor_base,valor_desconto)(¶descrição,diária,diária * 0.7 (grupo))

Page 41: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

41

Aplicação Exemplo

Cidade(codcid,nome)

Agência (coda,nome, caixa,codcid)

Cliente (codc,nome)

Conta (numc, coda, saldo)

Empréstimo (nume, coda, saldo)

Cliente_Conta (codc, numc)

Cliente_Empréstimo (codc, nume)

Page 42: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

42

Consultas Exemplos

Obter todos os empréstimos com saldo acima de R$1200

saldo > 1200 (Empréstimo)

Empréstimo (nume, coda, saldo)

Page 43: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

43

Consultas Exemplos

Obter o número dos empréstimos com saldo acima de R$1200

nume (saldo > 1200 (Empréstimo))

Empréstimo (nume, coda, saldo)

Page 44: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

44

Consultas Exemplos

Obter os códigos de todos os clientes que tem um empréstimo, uma conta ou ambos, de um banco

codc (Cliente_Empréstimo) codc (Cliente_Conta)

Em SQL:

Select codc from Cliente_Empréstimo UNION

Select codc from Cliente_Conta;

Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 45: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

45

Consultas Exemplo

Obter o código de todos os clientes que tem um empréstimo na agência 03.

codc (coda=03 (Cliente_Emprestimo.nume =

Empréstimo.nume(Cliente_Empréstimo x Empréstimo)))

codc (Cliente_Emprestimo.nume = Empréstimo.nume

coda=03 (Cliente_Empréstimo x Empréstimo))

Select codc from Cliente_Empréstimo, Empréstimo Where Cliente_Empréstimo.nume = Empréstimo.nume AND codc = 03;

Empréstimo (nume, coda, saldo)Cliente_Empréstimo (codc, nume)

Page 46: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

46

Consultas Exemplo

Obter os códigos de todos os clientes que tem um empréstimo na agência 03, mas não tem uma conta em qualquer agência do bancocodc (coda = 03 (Cliente_Empréstimo.nume = Empréstimo.nume

(Cliente_Empréstimo x Empréstimo))) – codc(Cliente_Conta)

Em SQL: (Select codc from Cliente_Empréstimo, Empréstimo where

Cliente_Empréstimo.nume = Empréstimo.nume AND coda = 03)

Minus (Select codc from Cliente_Conta)

Select codc from Cliente_Empréstimo, Empréstimo Where

Cliente_Empréstimo.nume = Empréstimo.nume AND

coda = 03 AND codc not in (Select codc from Cliente_Conta);

Empréstimo (nume, coda, saldo)Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 47: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

47

Consultas Exemplo

Obter os códigos de todos os clientes que tem um empréstimo na agência 03

Consulta 1

codc (coda = 03 (Cliente_Emprestimo.nume = Emprestimo.nume

(Cliente_Emprestimo x Emprestimo)))

Emprestimo (nume, coda,saldo)

Cliente_Emprestimo (codc, nume)

Select codc from Cliente_Emprestimo, EmprestimoWhere Cliente_Emprestimo.nume = Emprestimo.nume and coda = 03;

Page 48: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

48

Consultas Exemplo

Obter os códigos de todos os clientes que tem um empréstimo na agência 03

Consulta 2

codc (Emprestimo.nume = Cliente_Emprestimo.nume (

(coda = 03 (Emp (Emprestimo))) x Cliente_Emprestimo))

Emprestimo (nume, coda,saldo)

Cliente_Emprestimo (codc, nume)

Select codc from (Select * from Emprestimo where coda = 03) Emp, Cliente_EmprestimoWhere emp.nume = Cliente_Emprestimo.nume;

Page 49: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

49

Consultas Exemplo

Obter o maior saldo de conta Estratégia:

Obter aqueles saldos que não são os maioresRenomear a relação Conta como d, assim podemos comparar cada saldo da conta com todos os outros

Usar operação diferença para obter os saldos das contas que não foram encontrados no passo anterior

A consulta é:

saldo(Conta) - Conta.saldo

(Conta.saldo < d.saldo (Conta x d (Conta)))

Conta (numc, coda, saldo)

Select saldo from Conta minusSelect Conta.saldo from Conta, Conta d where Conta.saldo < d.saldo;

Page 50: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

50

Exercícios

Encontre os nomes de todos os funcionários que moram na mesma cidade e na rua de ‘Salete’

Cidade(codc,nome)Funcionário (codf, nome, rua,numero,codc)Trabalha(codf,code,salario)Empresa(code,nome,ender)Gerencia(codf,codg)

Funcionario.nome (Funcionário.rua = Endereco.rua Funcionario.codc. = Endereco.codc

(Funcionario x endereco(rua,codc) (Funcionario.rua,Funcionario.codc(nome.= ‘Salete’ (Funcionário)))

Select funcionario.nome from (Select funcionario.rua, funcionario.codc from funcionario where funcionario.nome = ‘Salete’) endereço, funcionarioWhere endereço.codc = funcionario.codc and endereço.rua = funcionario.rua;

Page 51: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

51

Exercícios

Encontre os códigos de todos os funcionários nesse banco de dados que não trabalham para a “UNINORTE”

Cidade(codc,nome)Funcionário (codf, nome, rua,numero,codc)Trabalha(codf,code,salario)Empresa(code,nome,ender)Gerencia(codf,codg)

codf(Funcionário) - Trabalha.codf

(Empresa.code. = Trabalha.code Empresa.nome. = ‘UNINORTE’

(Trabalha x Empresa))Select funcionario.codf from Funcionario minusSelect trabalha.codf from Empresa, TrabalhaWhere Empresa.code = Trabalha.code and Empresa.nome = ‘UNINORTE’;

Page 52: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

52

Exercícios

1. Selecione os produtos, cuja categoria é 7.

Produto(cod_produto,descrição,preço,cod_categoria)Categoria(cod_categoria,descrição)Estoque(cod_estoque,qtde,qtde_mínima,qtde_máxima,cod_deposito,cod_produto)Depósito(cod_deposito,nome)

categoria_cod = 7 (produto)

2. Selecione os produtos com preço maior que 100.

preco > 100 (produto)

3. Selecione os produtos no estoque que possuem a quantidade inferior a quantidade mínima.

qtde < qtde_minima (estoque)

Page 53: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

53

ExercíciosProduto(cod_produto,descrição,preço,cod_categoria)Categoria(cod_categoria,descrição)Estoque(cod_estoque,qtde,qtde_mínima,qtde_máxima,cod_deposito,cod_produto)Depósito(cod_deposito,nome)

4. Apresente uma lista com os atributos descrição e preço de todos os produtos.

descricao, preco (produto)

5. Liste apenas o nome dos depósitos.

      nome (deposito)

6. Mostre o nome e o preço de todos os produtos com o preço maior ou igual a 100.

    descricao, preco ( preco 100 (produto))

Page 54: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

54

ExercíciosProduto(cod_produto,descrição,preço,cod_categoria)Categoria(cod_categoria,descrição)Estoque(cod_estoque,qtde,qtde_mínima,qtde_máxima,cod_deposito,cod_produto)Depósito(cod_deposito,nome)

7. Selecione todos os produtos da categoria “ELETRONICOS”.

      categoria.descricao = “ELETRONICOS” ^ categoria.cod_categoria = produto.cod_categoria (produto

categoria)

8. Liste a descrição do produto, a quantidade e a quantidade mínima de todos os produtos que possuem a quantidade mínima menor que a quantidade.

descricao, qtde, qtde_minima (qtde > qtde_minima ^ produto.cod_produto = estoque.cod_produto (produto

estoque))

Page 55: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

55

ExercíciosProduto(cod_produto,descrição,preço,cod_categoria)Categoria(cod_categoria,descrição)Estoque(cod_estoque,qtde,qtde_mínima,qtde_máxima,cod_deposito,cod_produto)Depósito(cod_deposito,nome)

9. Selecione todos os produtos que estão no depósito de nome “CENTRO”.

nome = “CENTRO” ^ deposito.cod_deposito = estoque.cod_deposito (deposito estoque)

10. Selecione a descrição dos produtos que estão no depósito de nome “CENTRO”.

decrição Produto.cod_produto = Centro.cod_produto(Produto X Centro(cod_produto)(codp nome =

“CENTRO” ^ deposito.cod_deposito = estoque.cod_deposito (deposito estoque)))

Page 56: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

56

ExercíciosProduto(cod_produto,descrição,preço,cod_categoria)Categoria(cod_categoria,descrição)Estoque(cod_estoque,qtde,qtde_mínima,qtde_máxima,cod_deposito,cod_produto)Depósito(cod_deposito,nome)

11. Faça uma lista com a descrição e os preços de todos os produtos, cujo preço seja igual ao do produto com código 4.

     descricao, produto.preco (produto.preco = produto2.preco (produto ( preco ( cod = 4 (

produto2 (produto))))))

Page 57: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

57

Definição FormalUma expressão base na álgebra relacional consiste de:

Uma relação no banco de dados

Uma relação constante

Dadas as expressões E1 e E2 da álgebra relacional, as expressões seguintes são

todas da álgebra relacional:

E1 E2E1 – E2E1 x E2p (E1), P é um predicado de atributos em E1s(E1), S é uma lista consistindo dos mesmos atributos em E1

x (E1), x é o novo nome para o resultado de E1

Page 58: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

58

Operações Adicionais

Não adicionam quaisquer poderes a álgebra relacional

Simplificam consultas comuns

Operações

Interseção

Junção Natural

Divisão

Atribuição

Page 59: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

59

Operação Interseção

Notação: r s

Definida como:

r s = { t | t r t s }

Assume:

r, s tem a mesma aridade

atributos de r e s são compatíveis

Nota: r s = r – (r – s)

Page 60: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

60

Operação Interseção

Relações r, s:

r s

A B

121

A B

23

r s

A B

2

1

1

2

2

3

3

4

4

AA

AA

AB

AE

AC

AF

AD

AG

BA

BA

BB

BE

BC

BF

BD

BG

CA

CA

CB

CE

CC

CF

DD

1 AA BA CA

DG

INTERSEÇÃO

Linhas que estejam em ambas as tabelas

Page 61: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

61

Operação InterseçãoObter o código de todos os clientes que tem alguma locação e que foram motoristas para qualquer locação

¶ cod_motorista (locacao) ¶ cod_cliente (locacao)

Select cod_motorista From locacao Intersect

(Select cod_motorista From locacao)

Page 62: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

62

Consulta Exemplo

Obter os códigos de todos os clientes que tem um empréstimo e uma conta no banco

codc (Cliente_Empréstimo) codc (Cliente_Conta)

Em SQL:

Select codc from Cliente_Empréstimo INTERSECT

Select codc from Cliente_Conta;

Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 63: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

63

Notação: r s

Operação Junção Natural

Dados r e s serem relações em esquemas R e S respectivamente.Então, r s é uma relação no esquema R S obtida como segue:

Considerar que cada par de tuplas tr de r e ts de s

Se tr e ts tem o mesmo valor em cada um dos atributos em R S,

adicionar um tupla t para o resultado, onde

t tem o mesmo valor como tr em r

t tem o mesmo valor como ts em s

Exemplo:

R = (A, B, C, D) S = (E, B, D)

Resulta o esquema = (A, B, C, D, E)

r s é definida como:

r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s))

Page 64: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

64

Operação Junção NaturalRelações r, s:

A B

12412

C D

aabab

B

13123

D

aaabb

E

r

A B

11112

C D

aaaab

E

s

r s

1

1

2

2

3

3

4

4

AA

AA

AB

AB

AC

AC

AD

AD

BA

BA

BB

BB

BC

BC

BD

BD

CA

CA

CB

CB

CC

CC

DD

DD

1

2

3

4

AA

AE

AF

AG

BA

BE

BF

BG

CA

CE

CF

DG

1

2

3

4

AA

AE

AF

AG

BA

BE

BF

BG

CA

CE

CF

DG

JUNÇÃO

Page 65: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

65

Operação Junção Natural

Criar uma relação com nome UF e nome cidade

¶uf.nome,cidade.nome (σuf.cod_uf = cidade.cod_uf (UF x Cidade))

UF ⋈ Cidade

¶uf.nome,cidade.nome ( )

Page 66: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

66

Operação DivisãoNotação:

Adaptou as consultas que incluem a “for all”.

Dadas as relações r e s nos esquemas R e S respectivamente onde

R = (A1, …, Am , B1, …, Bn )

S = (B1, …, Bn)

O resultado de r s é uma relação no esquema

R – S = (A1, …, Am)

r s = { t | t R-S (r) u s ( tu r ) }

onde tu significa a concatenação de tuplas t e u para produzir uma

tupla simples

r s

Page 67: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

67

Operação Divisão Relações r, s:

r s: A

B

1

2

A B

12311134612

r

s

A divisão da relação r pela relação s é composta pelas linhas de r que estãoligadas a todas as linha de s.

Page 68: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

68

Operação Divisão

A B

aaaaaaaa

C D

aabababb

E

11113111

Relações r, s: r s:

D

ab

E

11

A B

aa

C

r

s

1

A

2

B

3

C

DIVISÃO

1

2

3

4

A

B

C

D

Page 69: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

69

Operação DivisãoPropriedade

Dada q = r s

Então q é a relação mais extensa satisfazendo q x s r

Definição em termos da operação básica da álgebra

Dado r(R) e s(S) ser relações, e dado S R

r s = R-S (r ) – R-S ( ( R-S (r ) x s ) – R-S,S(r ))

Ver por que

R-S,S (r) simplesmente atributos reordenados de r

R-S (R-S (r ) x s ) – R-S,S(r) ) dadas essas tuplas t em

R-S (r ) tal que para alguma tupla u s, tu r.

Page 70: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

70

Operação Divisão

Quais os pilotos que conduzem todos os aviões da companhia?

Piloto Avião

0020 1010020 1050010 1010010 1040010 1050010 1030015 1030015 104

Avião

101104105103

Piloto

0010

V

Divisor

R

Page 71: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

71

Operação AtribuiçãoA operação de atribuição () provê um modo conveniente para expressar consultas complexas.

Escrever consulta como um programa seqüencial consiste de:Uma série de atribuições Seguida por uma expressão, cujos valores são mostrados como resultado da consulta

Atribuição deve sempre ser feita por uma variável temporária de relaçãoExemplo: Escreva r s como

temp1 R-S (r )

temp2 R-S ((temp1 x s ) – R-S,S (r ))

resultado = temp1 – temp2

O resultado a direita do é atribuído para a variável de relação a esquerda do

Pode usar variável em expressões subseqüentes

Page 72: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

72

codc,nume,saldo (Cliente_Empréstimo Empréstimo )

Consultas Exemplos

Obter os códigos de todos os clientes que tem um empréstimo e uma conta no banco

codc (Cliente_Empréstimo) codc (Cliente_Conta)

Obter os códigos, número do empréstimo e o saldo de todos os clientes

que tem um empréstimo no banco e uma conta empréstimo

Empréstimo (nume, coda, saldo)Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 73: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

73

Consulta 2

codc, coda (Cliente_Conta Conta)

temp(coda) ({01, 03 })

Note que a Consulta 2 usa uma relação constante

Consulta 1

codc (coda = 01 (Cliente_Conta Conta ))

codc (coda = 03 (Cliente_Conta Conta))

Consultas Exemplos

Obter todos os códigos de clientes que tem conta nas agências 01 e 03

Conta (numc, coda, saldo)Cliente_Conta (codc, numc)

Page 74: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

74

codc, coda (Cliente_Conta Conta)

coda (codcid = 01 (Agência))

Obter todos os clientes que tem uma conta em todas as

agências localizadas na cidade de código 01

Consultas ExemplosAgência (coda,nome, caixa,codcid)Conta (numc, coda, saldo)Cliente_Conta (codc, numc)

Page 75: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

75

Operações Estendidas da Álgebra Relacional

Projeção Generalizada

Funções Agregadas

Outer Join

Page 76: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

76

Projeção GeneralizadaEstende a operação de projeção por funções aritméticas permitidas para ser usadas na lista projeção

E é qualquer expressão da álgebra relacional

Cada uma de F1, F2, …, Fn são expressões aritméticas envolvendo

constantes e atributos no esquema de E

Dada a relação Crédito(codc, limite, valor), obter quanto cada pessoa gasta:

codc, limite – valor (Crédito)

)( ,...,,21

EnFFF

Page 77: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

77

Funções e Operações AgregadasFunção Agregação obtém uma coleção de valores e retorna um valor simples como resultado

avg: valor médiamin: valor mínimomax: valor máximosum: soma de valorescount: número de valores

Operação Agregação na álgebra relacional

E é qualquer expressão da álgebra relacional

G1, G2 …, Gn é uma lista de atributos para o grupo (pode ser vazia)

Cada Fi é uma função agregada

Cada Ai é um nome de atributo

)()(,,(),(,,, 221121E

nnn AFAFAFGGG

Page 78: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

78

Operação AgregadaRelação r:

A B

C

7

7

3

10

g sum(c) (r) sum(c )

27

Page 79: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

79

Operação AgregadaRelação Conta agrupada pelo código da agência

coda g sum(saldo) (Conta)

numc Coda saldo

A-101 03 500

A-215 01 700

A-102 02 400

A-305 04 350

A-201 03 900

A-222 01 700

A-217 02 750

Coda Sum(saldo)

03 1400

01 1400

02 1150

04 350

Page 80: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

80

Funções Agregadas

Resultado da agregação não tem um nome

Pode usar a operação de renomeação para dar um nome

Por conveniência, é permitido renomear como parte da operação agregação

coda g sum(saldo) as soma_saldo (Conta)

Page 81: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

81

Operação Junção Externa

Uma extensão da operação Junção que evita perda de informação

Computa a junção e então adiciona tuplas formando uma relação que não casa tuplas na outra relação para o resultado da junção

Usa valores nulos:

nulo significa que o valor é desconhecido ou não existe

Todas as comparações envolvendo nulo são falsas por definição.

Page 82: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

82

Operação Junção Externa

Inner Join : Empréstimo Cliente_Empréstimo

nume Coda saldo codc

L-170 03 3000 01

L-230 01 4000 02

nume Coda saldo

L-170 03 3000

L-230 01 4000

L-260 02 1700

codc nume

01 L-170

02 L-230

04 L-155

Empréstimo Cliente_Empréstimo

Page 83: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

83

Operação Junção Externa

Junção Externa Esquerda (Left outer Join)

Empréstimo Cliente_Empréstimo

nume Coda saldo codc

L-170 03 3000 01

L-230 01 4000 02

L-260 02 1700 null

nume Coda saldo

L-170 03 3000

L-230 01 4000

L-260 02 1700

codc nume

01 L-170

02 L-230

04 L-155

Empréstimo Cliente_Empréstimo

Page 84: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

84

Operação Junção Externa

Junção Externa Direita (right outer Join)

Empréstimo Cliente_Empréstimo

nume Coda saldo codc

L-170 03 3000 01

L-230 01 4000 02

L-155 Null Null 04

nume Coda saldo

L-170 03 3000

L-230 01 4000

L-260 02 1700

codc nume

01 L-170

02 L-230

04 L-155

Empréstimo Cliente_Empréstimo

Page 85: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

85

Operação Junção Externa

Junção Externa Completa (full outer join)

Empréstimo Cliente_Empréstimo

nume Coda saldo codc

L-170 03 3000 01

L-230 01 4000 02

L-260 02 1700 Null

L-155 Null Null 04

nume Coda saldo

L-170 03 3000

L-230 01 4000

L-260 02 1700

codc nume

01 L-170

02 L-230

04 L-155

Empréstimo Cliente_Empréstimo

Page 86: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

86

Valores Nulos

É possível tuplas ter valor nulo, denotado por null, para alguns de

seus atributos

null significa um valor desconhecido ou que o valor não existe

O resultado de qualquer expressão aritmética envolvendo null é nulo

Funções Agregadas simplesmente ignoram valores nulos (como na

SQL)

Para eliminação duplicada e agrupamento, nulo é tratado semelhante

a qualquer outro valor e dois nulos são assumidos para ser o mesmo

(como na SQL)

Page 87: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

87

Valores NulosComparações com valores nulos retornam o valor especial: desconhecido

Se false foi usado ao em vez de desconhecido, então not (A < 5) não seria equivalente a A >= 5

Operadores Lógicos usando o valor verdade desconhecido:OR: (desconhecido or true) = true, (desconhecido or false) = desconhecido (desconhecido or desconhecido) = desconhecido

AND: (true and desconhecido) = desconhecido, (false and desconhecido) = false, (desconhecido and desconhecido) = desconhecido

NOT: (not desconhecido) = desconhecido

Em SQL “P é desconhecido” avaliado para true se o predicado P avaliado para desconhecido

Resultado do predicado é tratado como false se avaliado desconhecido

Page 88: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

88

Modificação do Banco de Dados

O conteúdo do banco de dados pode ser modificado usando as operações:

Deleção

Inserção

Atualização

Todas essas operações são expressadas usando o operador atribuição

Page 89: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

89

DeleçãoA requisição de deleção é expressa similarmente como uma consulta, exceto as tuplas mostradas para o usuário, as tuplas selecionadas são removidas do banco de dados

Pode deletar somente tuplas

Não pode deletar valores em atributos particulares

Uma deleção é expressa na álgebra relacional por:

r r – E

onde r é uma relação e E é uma consulta da álgebra relacional.

Page 90: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

90

Exemplos de Deleção

Deletar todos os registros de Conta, cujo coda = 01

Deletar todos os registros de empréstimo com saldo entre 0 a 50

Emprestimo Emprestimo – saldo 0and saldo 50 (Emprestimo)

Conta Conta – coda = 01 (Conta )

Cidade(codcid,nomec)Agência (coda,nomea, caixa,codcid)Cliente (codc,nome)Conta (numc, coda, saldo)Empréstimo (nume, coda, saldo)Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 91: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

91

r1 codcid = 01 (Conta Agencia )

r2 numc, coda, saldo (r1)

r3 codc, numc (r2 Cliente_Conta)

Cliente_Conta Cliente_Conta – r3

Conta Conta – r2

Exemplos de Deleção

Deletar todas as contas das agências localizadas na cidade cujo código igual 01

Cidade(codcid,nomec)Agência (coda,nomea, caixa,codcid)Cliente (codc,nome)Conta (numc, coda, saldo)Empréstimo (nume, coda, saldo)Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 92: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

92

Inserção

Inserir dados em uma relação:

Especificar uma tupla a ser inserida

Escrever uma consulta cujo resultado é um conjunto de tuplas a ser inserido

Em álgebra relacional, uma inserção é expressa por:

r r E

onde r é uma relação e E é uma expressão da álgebra relacional

A inserção de uma tupla simples é expressa por E, que é uma relação constante contendo uma tupla

Page 93: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

93

Exemplos de Inserção

Inserir informação no banco de dados especificando que o número do cliente é 01, agência A-973 e saldo 1200. A relação Cliente_Conta possui o código do cliente 02 e e número da conta 01.

Conta Conta {(01, A-973, 1200)}

Cliente_Conta Cliente_Conta {(02, 01)}

Cidade(codcid,nome)Agência (coda,nome, caixa,codcid)Cliente (codc,nome)Conta (numc, coda, saldo)Empréstimo (nume, coda, saldo)Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 94: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

94

r1 (coda = 01 (Cliente_Emprestimo Emprestimo))

Conta Conta numc, coda,200 (r1)

Cliente_Emprestimo Cliente_Emprestimo codc, nume (r1)

Exemplos de Inserção

Provê todos os clientes e seus empréstimos, na Agência 01, com saldo 200 na conta. Dado o número do empréstimo, com o número da conta para uma nova conta.

Cidade(codcid,nome)Agência (coda,nome, caixa,codcid)Cliente (codc,nome)Conta (numc, coda, saldo)Empréstimo (nume, coda, saldo)Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 95: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

95

Atualização

Um mecanismo para trocar um valor em uma tupla sem trocar todos os valores na tupla

Use o operador de projeção generalizada para fazer esta tarefa

Cada Fi é também

o I_ésimo atributo de r, se o I_ésimo atributo não é atualizado ou

Se o atributo será atualizado para a expressão F i , envolvendo somente constantes e os atributos de r, as quais dá um novo valor para os atributos

)(,,,, 21rr

lFFF

Page 96: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

96

Exemplos de Atualização

Atualizar e acrescentar no saldo de todas as contas em 5%.

Conta numc, coda, saldo * 1.05 (Conta)

Cidade(codcid,nome)Agência (coda,nome, caixa,codcid)Cliente (codc,nome)Conta (numc, coda, saldo)Empréstimo (nume, coda, saldo)Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 97: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

97

Exemplos de Atualização

Atualizar e acrescentar 5% para as contas menor ou igual a 10.000 ou 6% para as contas maior que 10.000

Conta numc, coda, saldo * 1.06 ( saldo 10000 (Conta ))

numc, coda, saldo * 1.05 (saldo 10000 (Conta))

Cidade(codcid,nome)Agência (coda,nome, caixa,codcid)Cliente (codc,nome)Conta (numc, coda, saldo)Empréstimo (nume, coda, saldo)Cliente_Conta (codc, numc)Cliente_Empréstimo (codc, nume)

Page 98: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

98

ExercíciosLoja(cod_loja,nome,cidade,estado)ContasPagar(cod,descrição,data_cp,data_vcto,data_pgto,valor,cod_fornecedor,cod_loja)ContasReceber(cod,descrição,data_cr,data_vcto,data_pgto,valor,cod_cliente,cod_loja)Fornecedor(cod_fornecedor,nome_fornecedor,contato,fone,email)Cliente(cod_cliente,nome_cliente,fone,email)

1.Faça uma lista das contas a pagar com vencimento para “01/01/2007”, trazendo apenas os atributos descrição e valor.

ContasPagar1 descricao, valor ( data_vcto = “01/01/2007” (ContasPagar))

2. Faça uma lista das contas a receber com vencimento para “01/01/2007”, trazendo apenas os atributos descrição e valor.

ContasReceber1 descricao, valor ( data_vcto = “01/01/2007” (ContasReceber))

Page 99: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

99

ExercíciosLoja(cod_loja,nome,cidade,estado)ContasPagar(cod,descrição,data_cp,data_vcto,data_pgto,valor,cod_fornecedor,cod_loja)ContasReceber(cod,descrição,data_cr,data_vcto,data_pgto,valor,cod_cliente,cod_loja)Fornecedor(cod_fornecedor,nome_fornecedor,contato,fone,email)Cliente(cod_cliente,nome_cliente,fone,email)

3. Faça uma lista que una ambos os resultados da questão 1 e da questão 2, trazendo em uma única lista todas as contas a pagar e a receber.

ContasPagar1 U ContasReceber1

4. Mostre o nome de todos os clientes que possuem débito não pago no contas a receber ou seja tuplas no contas a receber que o atributo data_pgto está vazio. nome_cliente (data_pagto = “ ” ^ Cliente.cod_cliente = ContasReceber.cod_cliente(Cliente

ContasReceber))

Page 100: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

100

ExercíciosLoja(cod_loja,nome,cidade,estado)ContasPagar(cod,descrição,data_cp,data_vcto,data_pgto,valor,cod_fornecedor,cod_loja)ContasReceber(cod,descrição,data_cr,data_vcto,data_pgto,valor,cod_cliente,cod_loja)Fornecedor(cod_fornecedor,nome_fornecedor,contato,fone,email)Cliente(cod_cliente,nome_cliente,fone,email)

5.Faça uma lista com todas as contas a pagar, apresentando apenas os atributos descrição, nome_fornecedor, datavcto, valor, com vencimento no mês de outubro, para relacionar o fornecedor a contas a pagar (utilize Junção Natural).

descricao, nome_fornecedor, data_vcto, valor ( data_pagto “01/10/2006” ^ data_vcto “31/10/2006” (ContasPagar

Fornecedor))

6. Faça uma lista com todas as contas a pagar das lojas de Curitiba, apresentando a loja, descrição, data_vcto, nome, e valor. (Utilize Divisão)

cod_loja,descricao, data_vcto, valor (ContasPagar) cod_loja ( cidade = “CURITIBA” (Loja))

Page 101: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

101

Exercícios

Page 102: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

102

Exercícios1. Mostre o título dos filmes cujo gênero seja “Ficção”.

titulo( descricao = “Ficção” ^ codGenero = Genero_Cod_Genero(Genero Filme))

ou

titulo( descricao = “Ficção” (Genero Filme))

2. Mostre o nome de todos os clientes que estão com locações a pagar.

nome( codCliente = Cliente_codCliente ^ valorApagar <> 0 (Cliente Locacao))

Ou

nome( valorApagar <> 0 (Cliente Locacao))

Page 103: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

103

Exercícios3. Mostre o titulo de todos os filmes que o cliente “Paulo” comprou.

R1 codVenda ( codCliente = Cliente_codCliente ^ nome = “Paulo” (Cliente Venda))

titulo ( codVenda = Venda_codVenda ^ Filme_codFilme = codFilme (Filme (ItemVenda R1)))

Ou

R1 codVenda ( nome = “Paulo” (Cliente Venda))

titulo (Filme (ItemVenda R1)))

Page 104: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

104

Exercícios4. Mostre o nome do diretor do filme “Matrix”.R1 Elenco_codElenco( codFilme = Filme_codFilme ^ titulo = “Matrix” (Filme ElencoFilme))

nome ( Elenco_codElenco= codElenco ^ função_codFuncao = codFuncao ^ descricao = “Diretor” (Função

(Elenco R1)))

5. Mostre o registro e o nome dos clientes responsáveis.

cod_registro, nome( responsavel = True (Registro Cliente))

6. Mostre o nome de todos os diretores de todos os filmes de ação.

R1 codFilme( codGenero= Gênero_codGenero ^ descricao = “Ação” (Genero Filme))

R2 função_codFuncao ( cod_Filme = Filme_codFilme ^ codElenco = Elenco_CodElenco(Elenco

(ElencoFilme R1))) nome( Função_codFuncao = codFuncao ^ descricao = “Diretor” (Elenco (Função R2)))

Page 105: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

105

Exercícios7. Mostre o título e o gênero de todos os filmes que o cliente “João” locou.R1 codLocacao( nome = ”João” ^ codCliente = Cliente_codCliente (Cliente Locacao))

R2 Genero_codGenero, titulo ( codLocacao = Locacao_codLocacao ^ filme_codFilme = codFilme (Filme (ItemLocacao

R1))) titulo, descricao ( genero_codGenero= codGenero (R2 Genero))

 8. Selecione todos os filmes do gênero “Romance” em que o ator “Brad Pitt” atuou.R1 codFilme, titulo( codGenero = Gênero_codGenero ^ descricao = “Romance” (Genero Filme))

R2 Função_codFuncao ( codFilme = Filme_codFilme ^ Elenco_codElenco = codElenco ^ nome = “Brad Pitt” (Elenco

(ElencoFilme R1))) R1.titulo( Funcao_codFuncao = codFuncao ^ descricao = “Ator” (R2 Genero))

9. Mostre o nome de todos os clientes que compram e nunca locaram.

R1 codCliente ( codCliente = Cliente_codCliente (Cliente Venda))

R2 codCliente ( codCliente = Cliente_codCliente (Cliente Locacao))

R3 R1- R2 nome(cliente.codCliente= R3.codCliente (Cliente R3))

Page 106: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

106

Exercícios10. Mostre o nome de todos os clientes que compraram e locaram filmes.

R1 codCliente ( codCliente = Cliente_codCliente (Cliente Venda))

R2 codCliente ( codCliente = Cliente_codCliente (Cliente Locacao))

R3 R1 R2

nome(codCliente= codCliente (Cliente R3))

11. Mostre o título de todos os filmes que foram vendidos e nunca foram locados.

R1 codFilme ( codFilme = Filme_codFilme ^ Venda_codVenda = codVenda (Venda (ItemVenda Filme)))

R2 codFilme ( codFilme = Filme_codFilme ^ Locacao_codLocacao= codLocacao(Locacao (ItemLocacao Filme)))

R3 R1-R2 título(codFilme= codFilme(Filme R3))

Page 107: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

107

Exercícios12. Mostre o título de todos os filmes que foram vendidos e locados.

R1 codFilme ( codFilme = Filme_codFilme ^ Venda_codVenda = codVenda (Venda (ItemVenda Filme)))

R2 codFilme ( codFilme = Filme_codFilme ^ Locacao_codLocacao= codLocacao(Locacao (ItemLocacao Filme)))

R3 R1 R2 título(codFilme= codFilme(Filme R3))

13. Mostre o nome e o telefone de todos os clientes que locam filmes de comédia e não locam filmes de terror.

R1 codFilme( descricao = “Comédia” ^ codGenero = Genero_codGenero(Genero Filme))

R2 Cliente_codCliente( filme_codFilme = codFilme ^ codLocacao = locacao_codLocacao(Locacao (R1 ItemLocacao)))

R3 codFilme( descricao <>”Terror” ^ codGenero = genero_codGenero(Genero Filme))

R4 Cliente_codCliente( filme_codFilme = codFilme ^ codLocacao = locação_codLocacao(Locacao (R3 ItemLocacao)))

R5 R2 – R4 nome, fone( Cliente_CodCliente = codCliente(Cliente R5))

Page 108: Banco de Dados - 4º Slide

2006 @ Profa. Dra. Maria Salete Marcon Gomes Vaz

108

Bibliografia

Sistema de Banco de DadosA. Silberschatz; H. F. Korth; S. Sudarschan. Makron Books, Terceira Edição, 2006.

Projeto de Banco de Dados - Uma Visão PráticaFelipe Machado; Maurício Abreu. 10a. Edição. Editora Érica, São Paulo, 2003.

Projeto de banco de DadosCarlos Alberto Heuser. 3a. Edição, Sagra Luzzatto, Rio Grande do Sul, 2000.

Modelagem Conceitual e Projeto de banco de DadosPaulo Cougo. Editora Campus, Rio de Janeiro, 1997.

Banco de Dados: Fundamentos, Projeto e ImplementaçãoDavid M. Kroenke. Livros Técnicos e Científicos, Sexta Edição, 1999.