Escolar Documentos
Profissional Documentos
Cultura Documentos
BANCO DE DADOS
aula 6 lgebra relacional -
agencia
nome_agencia
numero_conta
saldo
nome_agencia
cidade_agencia
saldo
SAL-1
0001
1200
NOH-1
Novo Hamburgo
260050
SAL-1
0002
3000
SAL-1
So Leopoldo
455580
NOH-1
0003
4500
POA-1
Porto Alegre
1250369
POA-1
0004
4000
SAL-2
So Leopoldo
125588
POA-1
0005
1500
depositante
NOH-1
0006
200
nome_cliente
numero_conta
SAL-2
0007
3750
Joo
0001
SAL-2
0008
1800
Pedro
0002
Francisco
0003
Maria
0004
Paulo
0007
Jos
0006
Ana
0005
cliente
nome
rua
cidade
Joo
Getlio Vargas
So Leopoldo
Pedro
Getlio Vargas
So Leopoldo
Francisco
Olavo Bilac
Novo Hamburgo
devedor
Maria
Joo Pessoa
Porto Alegre
nome_cliente
num_emprestimo
Paulo
Ceclia Meireles
So Leopoldo
Joo
E-001
Jos
Joo Goulart
Novo Hamburgo
Ana
E-005
Ana
Assis Brasil
Porto alegre
Helena
E-008
Beatriz
Floriano Peixoto
Novo Hamburgo
emprestimo
nome_agencia
num_emprestimo
total
SAL-1
E-001
40000
POA-1
E-005
25400
NOH-1
E-008
5420
select;
project;
Union;
namely
natural join
assignment;
set difference;
cartesian product;
rename;
set intersection;
division;
- Operaes primrias: operam sobre uma nica relao: select, project, rename.
- Operaes binrias: operam sobre duas relaes: union, set difference, cartesian
product.
O resultado da seleo
nome_agencia
numero_conta
saldo
SAL-1
0001
1200
SAL-1
0002
3000
Ex: nome_agncia,saldo(agencia)
nome_agencia
cidade_agencia
saldo
NOH-1
Novo Hamburgo
260050
SAL-1
So Leopoldo
455580
POA-1
Porto Alegre
1250369
SAL-2
So Leopoldo
125588
agencia
nome_agencia
saldo
NOH-1
260050
SAL-1
455580
POA-1
1250369
SAL-2
125588
nome_agencia
numero_conta
saldo
nome_agencia
numero_conta
saldo
nome_agencia
saldo
SAL-1
0001
1200
SAL-1
0001
1200
SAL-1
1200
SAL-1
0002
3000
SAL-1
0002
3000
SAL-1
3000
NOH-1
0003
4500
POA-1
0004
4000
POA-1
0005
1500
NOH-1
0006
200
SAL-2
0007
3750
nome_cliente(devedor) nome_cliente(depositante)
nome_cliente
Joo
Pedro
Francisco
(depositante)
Maria
Paulo
Jos
Ana
Helena
nome_cliente
Joo
Pedro
Linhas eliminadas
Francisco
Maria
Paulo
Jos
Ana
nome_cliente(devedor) nome_cliente(depositante)
devedor
depositante
nome_cliente
numero_conta
Joo
0001
nome_client
e
Joo
Pedro
0002
Ana
Francisco
0003
Maria
0004
Paulo
0007
Jos
0006
Ana
0005
r s = r (r - s)
s
r-s
r (r - s)
nome_client
e
Joo
num_emprestimo
Ana
E-005
Helena
E-008
E-001
devedor.num_emprestimo
nome_agencia
emprestimo.num_emprestimo
total
Joo
E-001
SAL-1
E-001
40000
Joo
E-001
POA-1
E-005
25400
Joo
E-001
NOH-1
E-008
5420
Ana
E-005
SAL-1
E-001
40000
Ana
E-005
POA-1
E-005
25400
Ana
E-005
NOH-1
E-008
5420
Helena
E-008
SAL-1
E-001
40000
Helena
E-008
POA-1
E-005
25400
Helena
E-008
NOH-1
E-008
5420
devedor.num_emprestimo
nome_agencia
emprestimo.nm_emprestimo
total
E-001
SAL-1
E-001
40000
Ana
E-005
SAL-1
E-001
40000
Helena
E-008
SAL-1
E-001
40000
OPS !!!
Obs: Como a operao produto cartesiano associa todas as tuplas de emprstimos a todas as
tuplas de devedor, ento existem emprstimos que esto relacionados erroneamente a alguns
clientes. Para contornar este problema, devemos exigir que o atributo devedor.num_emprestimo
seja igual ao atributo emprestimo.num_emprestimo.
- Assim temos:
devedor.num_emprestimo = emprestimo.num_emprestimo (nome_agncia = SAL-1 (devedor x emprstimo))
nome_client
e
Joo
devedor.num_emprestimo
nome_agencia
emprestimo.num_emprestimo
total
E-001
SAL-1
E-001
40000
x(E)
Ex: Desejamos o nome dos clientes que moram na mesma cidade
de Francisco.
cliente
nome_cliente
rua_cliente
cidade_cliente
Joo
Getlio Vargas
So Leopoldo
Pedro
Getlio Vargas
So Leopoldo
Francisco
Olavo Bilac
Novo Hamburgo
Maria
Joo Pessoa
Porto Alegre
Paulo
Ceclia Meireles
So Leopoldo
Jos
Joo Goulart
Novo Hamburgo
Ana
Assis Brasil
Porto alegre
Beatriz
Floriano Peixoto
Novo Hamburgo
nome_cliente
rua_cliente
cidade_cliente
Francisco
Olavo Bilac
Novo Hamburgo
cidade_cliente
Novo Hamburgo
nome_cliente
rua_cliente
cidade_cliente
cidade_cliente
Joo
Getlio Vargas
So Leopoldo
Novo Hamburgo
Pedro
Getlio Vargas
So Leopoldo
Novo Hamburgo
Francisco
Olavo Bilac
Novo Hamburgo
Novo Hamburgo
Maria
Joo Pessoa
Porto Alegre
Novo Hamburgo
Paulo
Ceclia Meireles
So Leopoldo
Novo Hamburgo
Jos
Joo Goulart
Novo Hamburgo
Novo Hamburgo
Ana
Assis Brasil
Porto alegre
Novo Hamburgo
Beatriz
Floriano Peixoto
Novo Hamburgo
Novo Hamburgo
nome_cliente
nome_cliente(cliente.cidade_cliente = cid_francisco.cidade_cliente
(cliente x
cid_francisco(
(nome_cliente = Francisco(cliente)))))
cidade_cliente
Francisco
Jos
Beatriz
devedor.num_emprestimo = emprestimo.num_emprestimo
(devedor x emprestimo))
nome_client
e
Joo
num_emprestimo
total
E-001
40000
Ana
E-005
25400
Helena
E-008
5420
emprstimo)
s=
RS(
Em que R S = {A1,A2,...,An}
Propriedades:
- a juno natural associativa, portanto:
cliente
conta
depositante = (cliente
conta)
depositante = cliente
s=rxs
(conta
depositante)
A1
A1
A2
a1
a1
b1
a2
a2
b1
a3
a3
b1
a4
b1
a1
b2
a3
b2
a2
b3
a3
b3
a4
b3
a1
b4
a2
b4
a3
b4
A2
b1
b4
depositante
agencia
nome_agencia
numero_conta
saldo
nome_agencia
cidade_agencia
saldo
nome_cliente
numero_conta
SAL-1
0001
1200
NOH-1
Novo Hamburgo
260050
Joo
0001
SAL-1
0002
3000
SAL-1
So Leopoldo
455580
Pedro
0002
NOH-1
0003
4500
POA-1
Porto Alegre
1250369
Francisco
0003
POA-1
0004
4000
SAL-2
So Leopoldo
125588
Maria
0004
POA-1
0005
1500
Paulo
0007
NOH-1
0006
200
Jos
0006
SAL-2
0007
3750
Ana
0005
SAL-2
0008
1800
Joo
0008
nome_agencia(cidade_agencia = So Leopoldo(agencia))
nome_agncia
cidade_agncia
saldo
nome_agncia
SAL-1
So Leopoldo
455580
SAL-1
SAL-2
So Leopoldo
125588
SAL-2
nome_cliente, nome_agencia(depositante
conta)
nome_cliente
nome_agencia
Joo
SAL-1
Pedro
SAL-1
Francisco
NOH-1
Maria
POA-1
Paulo
SAL-2
Jos
NOH-1
Ana
POA-1
Joo
SAL-2
nome_cliente, nome_agencia(depositante
conta)
nome_agencia(cidade_agencia = So Leopoldo(agencia))
nome_cliente
Joo
nome_agencia(cidade_agencia = So Leopoldo(agencia))
temp2
nome_cliente, nome_agencia(depositante
conta)
(E)
(credito)
credito
nome_cliente
limite_credito
credito_usado
nome_cliente
Jos
4000
2200
Jos
1800
Ana
3200
100
Ana
3100
Pedro
1200
1500
Pedro
-300
Maria
5800
5000
Maria
800
Flvia
3600
3600
Flvia
limite_credito - credito_usado
empregado
nome_empregado
rua
cidade
nome_empregado
nome_agencia
salario
Jos
Joo Goulart
Novo Hamburgo
Jos
NOH-1
5000
Ana
Assis Brasil
Porto Alegre
Ana
POA-1
4800
Pedro
Getlio Vargas
So Leopoldo
Flvia
SAL-1
3200
Maria
Joo Pessoa
Porto Alegre
Maria
POA-1
6500
trabalhador_integral)
nome_empregado
rua
cidade
nome_agencia
salario
Jos
Joo Goulart
Novo Hamburgo
NOH-1
5000
Ana
Assis Brasil
Porto Alegre
POA-1
4800
Maria
Joo Pessoa
Porto Alegre
POA-1
6500
problema: os dados de rua e cidade do empregado Pedro foram perdidos, bem como os dados de agncia
e salrio foram perdidos da empregada Flvia.
soluo: utilizar as operaes de junes externas para evitar perda de informaes, que podem ser:
trabalhador_integral
nome_empregado
rua
cidade
nome_agencia
salario
Jos
Joo Goulart
Novo Hamburgo
NOH-1
5000
Ana
Assis Brasil
Porto Alegre
POA-1
4800
Maria
Joo Pessoa
Porto Alegre
POA-1
6500
Pedro
Getlio Vargas
So Leopoldo
Nulo
Nulo
trabalhador_integral
nome_empregado
rua
cidade
nome_agencia
salario
Jos
Joo Goulart
Novo Hamburgo
NOH-1
5000
Ana
Assis Brasil
Porto Alegre
POA-1
4800
Maria
Joo Pessoa
Porto Alegre
POA-1
6500
Flvia
Nulo
Nulo
SAL-1
3200
trabalhador_integral
nome_empregado
rua
cidade
nome_agencia
salario
Jos
Joo Goulart
Novo Hamburgo
NOH-1
5000
Ana
Assis Brasil
Porto Alegre
POA-1
4800
Maria
Joo Pessoa
Porto Alegre
POA-1
6500
Pedro
Getlio Vargas
So Leopoldo
Nulo
Nulo
Flvia
Nulo
Nulo
SAL-1
3200
(trabalhador_integral)
salario
sum salario
nome_empregado
nome_agencia
salario
Jos
NOH-1
5000
Ana
POA-1
4800
Flvia
SAL-1
3200
Maria
POA-1
6500
14505
nome_agencia
count-distinct
count nome_agencia
(trabalhador_integral)
nome_agencia
count-distinct nome_agencia
(trabalhador_integral)
salario
(trabalhador_integral)
avg salario
3626.25
salario
(trabalhador_integral)
salario
(trabalhador_integral)
min salario
3200
max salario
6500
trabalhador_integral
nome_agencia
g sum
salario
(trabalhador_integral)
nome_agencia
g sum
salario
min
nome_empregado
nome_agencia
salario
Jos
NOH-1
5000
Ana
POA-1
4800
Flvia
SAL-1
3200
Maria
POA-1
6500
Fernando
POA-1
4000
Beatriz
SAL-1
1000
Bruno
NOH-1
3000
salario
(trabalhador_integral)
nome_agencia
sum salario
nome_agencia
sum salario
min salario
NOH-1
8000
NOH-1
8000
3000
POA-1
15300
POA-1
15300
4000
SAL-1
4200
SAL-1
4200
1000
- Formalmente:
nome_cliente = Joo
(conta)
cidade_agencia = So Leopoldo
r2
conta conta r2
(conta
(r1)
agencia)
conta
nome_agencia
numero_conta
saldo
SAL-1
0001
1200
SAL-1
0002
3000
NOH-1
0003
4500
POA-1
0004
4000
POA-1
0005
1500
NOH-1
0006
200
SAL-2
0007
3750
SAL-2
0008
1800
depositante
nome_cliente
numero_conta
Ex: inserir que o cliente Saulo tem 3800 na conta 010 da agncia NOH-1.
Joo
0001
Pedro
0002
Francisco
0003
Maria
0004
Paulo
0007
Jos
0006
Ana
0005
devedor
r2
emprestimo)
nome_client
e
Joo
num_emprestimo
Ana
E-005
Helena
E-008
E-001
emprestimo
nome_agencia
total
SAL-1
num_emprestim
o
E-001
POA-1
E-005
25400
NOH-1
E-008
5420
40000
r
F1, F2, ..., Fn (r), em que cada Fi o i-simo atributo de r se o i-simo atributo no for atualizado,
ou, se o i-simo atributo for atualizado, ento cada Fi uma expresso envolvendo somente constantes e os
atributos de r, que d novos valores a esses atributos.
Ex: A taxa de juros aumentou e o saldo de todas as contas aumentou 5%.
conta
(conta)
Ex: As contas com saldo acima de 2500 recebem 10%, e os demais 5%.
conta
(conta))
(conta))