Você está na página 1de 24

Modelo Relacional - Manipulao

Duas categorias de linguagens


formais
lgebra relacional e clculo relacional

comerciais (baseadas nas linguagens formais)


SQL

Linguagens formais - Caractersticas


orientadas a conjuntos
linguagens de base
linguagens relacionais devem ter no mnimo um
poder de expresso equivalente ao de uma
linguagem formal

fechamento
resultados de consultas so relaes

lgebra Relacional
Operadores para consulta de relaes
Linguagem procedural
uma expresso na lgebra define uma execuo
sequencial de operadores
a execuo de cada operador produz uma relao

Classificao dos operadores


fundamentais
unrios: seleo, projeo
binrios: produto cartesiano, unio e diferena

derivados
binrios: interseco e juno

especial
renomeao (unrio)

Esquema Relacional Exemplo


Ambulatrios(nroa, andar, capacidade)
Mdicos(codm, CPF, nome, idade, cidade,
especialidade, nroa)
Pacientes(codp, CPF, nome, idade, cidade, doena)
Consultas(codm, codp, data, hora)
Funcionrios(codf, CPF, nome, idade, cidade, salrio)

Seleo
Retorna tuplas que satisfazem um predicado
Resultado
subconjunto horizontal de uma relao

Notao

predicado

(relao)

Operadores de comparao
=, <, <=, >, >=,

Operadores lgicos: (and) (or) (not)


Exemplo: z >= 2(R)
R

resultado

Projeo
Retorna um ou mais atributos de interesse
Resultado
subconjunto vertical de uma relao

Notao

lista_nomes_atributos

(relao)

Eliminao automtica de duplicatas


Exemplo: x,y(R)
R
x y
1 1
2 2
2 2

z
1
2
3

resultado
x y
1 1
2 2

Para resolver
1) buscar os dados dos mdicos ortopedistas com
mais de 55 anos
2) buscar os dados de todas as consultas, exceto
aquelas marcadas para os mdicos com cdigo
46 e 79
3) buscar o nmero dos ambulatrios do terceiro
andar
4) buscar o cdigo dos mdicos e as datas das
consultas para os pacientes com cdigo 122 e
725

Produto Cartesiano
Retorna todas as combinaes de tuplas de duas
relaes R1 e R2
Grau do resultado
grau(R1) + grau(R2)

Cardinalidade do resultado

cardinalidade(R1) * cardinalidade(R2)

Notao
relao1
Exemplo:
R1
x
1
2
3

y
1
2
3

z
1
2
3

R2
w y
1 1
2 2

relao2
R1 X R2
x R1.y
1
1
2
2
3
3

1
1
2
2
3
3

z
1
1
2
2
3
3

w R2.y
1
2
1
2
1
2

1
2
1
2
1
2

Para resolver
1) buscar o nome dos mdicos que tm consulta
marcada e as datas das suas consultas
2) buscar o nmero e a capacidade dos ambulatrios
do quinto andar e o nome dos mdicos
ortopedistas que atendem neles
3) buscar, para as consultas marcadas para o
perodo da manh (7hs-12hs) do dia 29/08/13, o
nome do mdico, o nome do paciente e a data da
consulta

Otimizao Algbrica
Buscar o nome dos mdicos que esto
internados como pacientes, sofrendo de
hepatite

Mdicos.nome

( Pacientes.CPF = Mdicos.CPF (Pacientes X Mdicos))


doena = hepatite

antecipando selees e definindo projees

nome (Pacientes.CPF = Mdicos.CPF (CPF(doena = hepatite (Pacientes)))


X (CPF, nome(Mdicos)))

Renomeao
Altera o nome de uma relao e/ou dos seus
atributos
Notao
(nome_atributo1,

..., nome_atributoN)E/OU nome_relao

Exemplos

R
x y z
1 1 1
2 1 3

R X R1 (R)
R.x
R.y R.z
1
1
1
1
1
1
2
1
3
2
1
3
(a, b, c) (R) a b c
1 1 1
2 1 3

(relao)

R1.x
1
2
1
2

R1.y R1.z
1
1
1
3
1
1
1
3

Para resolver
1)

buscar o nmero dos ambulatrios com


capacidade superior capacidade do ambulatrio
de nmero 100
2) buscar o nome e o CPF dos funcionrios que
recebem salrios iguais ou inferiores ao salrio do
funcionrio com CPF 1001

Unio, Diferena e Interseco


Operam somente sobre duas relaes R1 e
R2 ditas compatveis
grau(R1) = grau(R2)
para i de 1 at grau(R1):
domnio(atributo ai de R1) = domnio(atributo ai de
R 2)

Grau do resultado
grau(R1) (ou grau(R2))

Nomes dos atributos do resultado


nomes dos atributos da primeira relao (R1
-relao esquerda)

Unio
Retorna a unio das tuplas de de duas
relaes R1 e R2
Eliminao automtica de duplicatas
Notao
relao1 relao2
Exemplo:
R1
R2
R1 R2
x
1
1
2
3

y
1
2
2
1

z
1
2
3
1

x
1
1
1

y z
1 1
2 1
2 3

x
1
1
1
1
2
3

y
1
2
2
2
2
1

z
1
1
2
3
3
1

Diferena
Retorna as tuplas presentes em R1 e
ausentes em R2
Notao
relao1 relao2
Exemplo:
R1
x
1
1
2
3

R1 R2

R2
y
1
2
2
1

z
1
2
3
1

x
1
1
3

y
1
2
1

z
1
1
1

x y z
1 2 2
2 2 3

Interseco
Retorna as tuplas comuns a R1 e R2
Notao
relao1 relao2
Exemplo:
R1
x
1
1
2
3

R1 R2

R2
y
1
2
2
1

z
1
2
3
1

x
1
1
3

y
1
2
1

z
1
1
1

x y z
1 1 1
3 1 1

Para resolver (usando , ou )


1) buscar o nome e CPF dos mdicos e dos pacientes
cadastrados no hospital
2) buscar o nome, CPF e idade dos mdicos, pacientes e
funcionrios que residem em Florianpolis
3) buscar o nmero dos ambulatrios onde nenhum
mdico d atendimento
4) buscar o nome e CPF dos mdicos pediatras que no
atendem nos ambulatrios 101 e 102, e esto
internados como pacientes sofrendo de gastrite

Juno (Join)
Retorna a combinao de tuplas de duas
relaes R1 e R2 que satisfazem um
predicado
Notao
relao1

Exemplo:
R1
x
1
2
3

y
1
2
3

z
1
2
3

relao2

R2

R1 X R2

w y
1 1
2 2

x
2
3
3

R1.y
2
3
3

= R1.y > R2.y


z w
2 1
3 1
3 2

R2.y
1
1
2

Juno Natural (natural join)


Juno na qual uma igualdade
predefinida entre todos os atributos de
mesmo nome presentes em duas relaes
R1 e R2 (atributos de juno). Estes atributos
s aparecem uma vez no resultado
Notao
relao1
relao2
Derivao
atributos de juno
R1 R2 = A1, ..., An, B1, ..., Bm, C1, ..., Cx (R1 X R2)
= R1.C1 = R2.C1 ^ ... ^ R1.Cx = R2.Cx

Juno Natural
Exemplos
R1
x
1
1
2
R1
x
1
1
2

y z
1 1
1 2
2 3

y z
1 1
1 2
2 3

R2
w y
1 1
2 2

R1
x
1
1
2

R2
x y w
1 1 3
2 2 2

R1
x
1
1
2

y
1
1
2

R2
z
1
2
3

w
1
1
2

y
1
1
2

R2
z
1
2
3

w
3
3
2

Juno Natural

Exemplos
R1
x y z
1 1 1
1 1 2

R2
w t
1 1
2 2

R1
x
1
1
1
1

y
1
1
1
1

R2
z
1
1
2
2

w
1
2
1
2

t
1
2
1
2

Para resolver
1) buscar o nmero e a capacidade dos ambulatrios
do quinto andar e o nome dos mdicos que
atendem neles
2) buscar o nome e o salrio dos funcionrios de
Florianpolis e Palhoa que esto internados como
pacientes e tm consulta marcada em 20/09/2013
3) buscar o nmero dos ambulatrios que esto no
mesmo andar do ambulatrio 101 e possuem
capacidade superior capacidade dele

Junes Externas (outer joins)


Juno na qual as tuplas de uma ou ambas
as relaes que no so combinadas so
mesmo assim preservadas no resultado
Trs tipos (exemplos com juno natural)
juno externa esquerda (left [outer] join)
tuplas da relao esquerda so preservadas
notao: relao1
relao2

juno externa direita (right [outer] join)


tuplas da relao direita so preservadas
notao: relao1
relao2

juno externa completa (full [outer] join)


tuplas de ambas as relaes so preservadas
notao: relao1
relao2

Junes Externas (outer joins)

Exemplos
R1
x
1
2
3
5

y z
1 1
1 2
3 3
5 5

R2
x
1
2
4

R1
R2
x y z a
1 1 1 1
2 1 2 1
4
4

a
1
1
4

b
1
2
4

b
1
2
4

R1
x
1
2
3
5
R1
x
1
2
3
5
4

y
1
1
3
5
y
1
1
3
5

R2
z a b
1 1 1
2 1 2
3
5
R2
z a
1 1
2 1
3
5
4

b
1
2
4

Para resolver
1) buscar os dados de todos os mdicos e, para
aqueles que tm consultas marcadas, mostrar os
dados de suas consultas
2) buscar os nmeros de todos os ambulatrios e,
para aqueles ambulatrios nos quais mdicos do
atendimento, exibir o cdigo e o nome dos
mdicos associados

Você também pode gostar