Você está na página 1de 54

Aula 07

Algebra Relacional
Banco de Dados
INTRODUÇÃO
Introdução
• Tópicos:
• Linguagens Formais: Álgebra e
Cálculo Relacional
• Linguagem Comercial: SQL
• Operadores (Teoria dos Conjuntos)
• Operações Especí cas
• Representação de expressões por árvore
fi
Modelagem Relacional/Manipulação

• Duas categorias de linguagens:


• Formais
• Álgebra e Cálculo Relacional
• Comerciais
• Baseadas nas linguagens formais
• SQL (Structured Query Language)
Modelagem Relacional/Manipulação

• Características (Linguagens Formais) (1):


• Orientadas a conjuntos
• Linguagem de Base
• Linguagens relacionais devem ter no mínimo um poder de
expressão equivalente ao de uma linguagem formal
• Fechamento
• Resultados das consultas são relações
Modelagem Relacional/Manipulação

• Características (Linguagens Formais) (2):


• Operadores para consulta e alteração de relações (conjuntos)
• Linguagem Procedural
• Uma expressão na álgebra de ne uma execução sequencial de
operadores
• A execução de cada operador produz uma relação
fi
Álgebra Relacional
• Classi cação dos Operadores:
• Fundamentais
• Unário: seleção e projeção
• Binários: produto cartesiano, união e diferença
• Derivados
• Binários: intersecção, junção e divisão
• Especiais
• Renomeação (união) e atribuição
• Operador de alteração (unário)
fi
Álgebra Relacional
• Características:
• Procedimental
• Possui o mesmo poder de expressão que o cálculo relacional
• Variantes da álgebra relacional são usadas internamente pelos
SGBDs relacionais durante a otimização de consultas (SQL
Tuning)
• SQL (Structured Query Language)
• Originária do cálculo relacional
• Interface padrão dos SGBDs relacionais
Álgebra Relacional

• Detalhes das Operações (1):


• Básicas:
• Oriundas da teoria de conjuntos: produto cartesiano, união e
diferença
• Especí cas para relações: seleção, projeção e renomeação
• Adicionais:
• Provenientes da teoria de conjuntos: intersecção
• Especí cas para relações: divisão e junção
fi
fi
Álgebra Relacional

• Detalhes das Operações (2):


• Observações:
• As operações básicas são su cientes para exprimir as mesmas consultas
que o cálculo relacional
• As operações adicionais auxiliam a formular certas consultas que seriam
complexas de exprimir usando apenas as operações básicas
fi
Álgebra Relacional

• Operações oriundas da Teoria dos Conjuntos:


• União
•rUs
• Diferença
•r–s
• Produto Cartesiano
•rxs
• Intersecção
•r s
U
Álgebra Relacional

• União
• Retorna a união das tuplas de duas relações R1 e R2
• Eliminação automática de duplicatas
• Notação:
• relação1 U relação2 R1 R2 R1 U R2

• Exemplo:
Álgebra Relacional

• Diferença
• Retorna as tuplas presentes em R1 e ausentes em R2
• Notação:
• relação1 - relação2

• Exemplo: R1 R2 R1 - R2
Álgebra Relacional

• Intersecção
• Retorna as tuplas comuns em R1 e R2
• Notação:
• relação1
U
relação2


U
Exemplo: R1 R2 R1 R2
Álgebra Relacional

• Exemplos:
• Banco de Dados / Operações
DiscGR 1) Quais disciplinas estão sendo
oferecidas na GR ou PG?

DiscGR U DiscPG
DiscPG
Álgebra Relacional

• Exemplos:
• Banco de Dados / Operações

DiscGR 2) Quais disciplinas estão sendo


oferecidas apenas na GR?

DiscGR – DiscPG
DiscPG
Álgebra Relacional
• Exemplos:
• Banco de Dados /
Operações 3) Quais disciplinas estão sendo
DiscGR oferecidas na GR e na PG?

DiscGR DiscPG
U

DiscPG
Álgebra Relacional

• Produto Cartesiano
• Retorna todas as combinações de tuplas de duas relações R1 e R2
• Grau do Resultado
• Grau (R1) + Grau (R2)
• Cardinalidade do Resultado
• Cardinalidade (R1) * Cardinalidade (R2)
• Notação:
• relação1 X relação2
Álgebra Relacional

• Produto Cartesiano
• Exemplo:
R1 R2 R1 X R2
Álgebra Relacional

• Exemplo:
• Banco de Dados / Produto Cartesiano
DiscGR
DiscGR X Prof

Prof
Álgebra Relacional
• Operações Especí cas (1):
• Operação:
• Seleção

• Notação:
P(r)

• Descrição:
• Selecione as tuplas de “r” que satisfazem o predicado de seleção “P”
fi
Álgebra Relacional

• Operações Especí cas (2):


• Operação:
• Projeção

• Notação:
A1, ..., An(r)

• Descrição:
• Projeção das tuplas de “r” na lista de atributos A1, ..., An
fi
Álgebra Relacional
• Operações Especí cas (3):
• Operação:
• Renomeação

• Notação: S[B1, ..., Bk](e)

• Descrição:
• Nomeia o resultado da expressão “e” como S[B1, ..., Bk]
fi
Álgebra Relacional
• Operações Especí cas (4):
• Operação:
• Junção

• Notação: r |X| P S

• Descrição:
• Concatenação das tuplas de “r” e “s” que satisfazem o predicado de junção “P”
fi
Álgebra Relacional
• Operações Especí cas (5):
• Operação:
• Equijunção

• Notação: r |X| S

• Descrição:
• Concatenação das tuplas de “r” e “s” que coincidem nos atributos em comum,
eliminando os atributos em duplicata
fi
Álgebra Relacional
• Operações Especí cas (6):
• Operação:
• Divisão

• Notação: r÷S

• Descrição:
• R – S(r) – (( R – S(r) X S) – R – S,S (r))
fi
Álgebra Relacional
• Seleção
• Retorna tuplas que satisfazem um determinado predicado
• Resultado:
• Subconjunto horizontal de uma relação
• Notação:
predicado (relação)

• Exemplo:
R resultado
z >= 2 (R)
Seleção

• Exemplo:
• Banco de Dados

1) Quais disciplinas de GR
DiscGR ocupam a sala L520?
End = L520 (DiscGR)
Álgebra Relacional
• Projeção
• Retorna um ou mais atributos de interesse
• Eliminação automática de duplicatas
• Resultado:
• Subconjunto vertical de uma relação
• Notação:
lista_nomes_atributos (relação)

• Exemplo:
R resultado
x, y (R)
Projeção

• Exemplo:
• Banco de Dados

DiscGR 2) Quais salas são usadas por


quais disciplinas de GR?

Cod, End (DiscGR)


Consulta Simples
• Consultas Simples versus Álgebra Relacional:
Projeção: SELECT codigo, endereco FROM tb_disciplina;

Codigo, Endereco (tb_disciplina)

Seleção:
SELECT *
FROM tb_disciplina
WHERE endereco = “L510”;

Endereco = L510 (tb_disciplina)


Álgebra Relacional
• Renomeação
• Altera o nome de uma relação e / ou dos seus atributos
• Notação:
(nome_atributo1, ..., nome_atributoN) e/ou nome_relação (relação)

• Exemplo (1):

R RX R1(R)
Álgebra Relacional
• Renomeação
• Altera o nome de uma relação e / ou dos seus atributos
• Notação:
(nome_atributo1, ..., nome_atributoN) e/ou nome_relação (relação)

• Exemplo (2):

R (a, b, c) (R)
Projeção

• Exemplo:
• Banco de Dados
3) Renomeie e2, resultado de (2), para
DiscGR
DS[Disciplina, Sala]

DS[Disciplina, Sala] (e2)


Álgebra Relacional

• Junção
• Junção na qual é uma igualdade prede nida entre todos os atributos
presentes em duas relações R1 e R2 (atributos de junção)
• Estes atributos só aparecem uma vez no resultado
• Notação:
relação1 |X| relação2

atributos de junção
• Derivação:
R1 |X| R2 = A1 , ..., An , B1 , ..., Bm , C1 , ..., Cx (R1 X R2)
= R1.C1 = R2.C1 ^ ... ^ R1.Cx = R2.Cx
fi
Álgebra Relacional

• Junção
• Exemplos:
R1 R2 R1 |X| R2

R1 R2 R1 |X| R2
Junção
• Exemplo:
• Banco de Dados

DiscGR 4) Quais professores lecionam na


graduação?

DiscGR |X| DiscGR.Matr = Prof.Matr Prof


Prof
Equ unção
• Exemplo:
• Banco de Dados
DiscGR 5) Quais professores lecionam na
graduação?

DiscGR |X| Prof


Prof
ij
Junção
6) Quais disciplinas da GR Pedro
• Exemplo:
leciona?
• Banco de Dados

DiscGR Cod((DiscGR |X| Matr( Nome=“Pedro”(Prof))))

Prof
Consulta Simples
• Consultas Simples versus Álgebra Relacional:
Disc
Junção:
SELECT *
FROM Disc, Prof
WHERE Disc.Matricula = Prof.Matricula;
Disc |X| Disc.Matricula = Prof. Matricula Prof
|X| Disc.Matricula = Prof. Matricula

Prof
=
Álgebra Relacional

• Divisão
• Sejam R e S esquemas de relações e “r” e “s” relações com os esquemas R
eS
• t ϵ r ÷ s se e somente se
1. t ϵ R-S(r)

2. para todos ts ϵ S, existe tr ϵ r tal que


1. tr[S] = ts[S] e
2. tr[R-S] = t

Extrair as linhas de uma tabela cujos valores de coluna


correspondam a aqueles da segunda tabela
Álgebra Relacional
• Divisão
• Exemplo:
• Qual a matrícula dos professores que lecionam todas as disciplinas da
GR?
R PD ÷ DGr
Álgebra Relacional
• Exemplos (Diversos)
• Esquema Relacional do Banco de Dados
• Disc [Cod, End, Matr, Nivel]
• Prof [Matr, Nome, Idade]

• Estado do Banco de Dados:


Álgebra Relacional
• Exemplos:
• Qual a matrícula dos professores que lecionam disciplinas na L520?

R1 selecione Disc onde End = L520;


R2 projete R1 em Matr;
• ou, equivalente:
R1  projete Disc em End, Matr;
R2 selecione R1 onde End = L520;
R3  projete R2 em Matr;
Álgebra Relacional
• Exemplos:
• Qual a matrícula dos professores com mais de 45 anos que lecionam disciplinas
na GR?
R1  junte Disc e Prof onde Disc.Matr = Prof.Matr;
R2  selecione R1 onde Nivel = GR e Idade > 45;
R3  projete R2 em Nome;
• ou, equivalente:

R1  selecione Disc onde Nivel = GR;


R2  selecione Prof onde Idade > 45;
R3  junte R1 e R2 onde R1.Matr = R2.Matr;
R4  projete R3 em Nome;
Álgebra Relacional

• Exemplos:
• Qual a matrícula dos professores que lecionam a maioria das disciplinas da GR?

R1  selecione Disc onde Nivel = GR;


R2  projete R1 em Cod;
R3  projete Disc em Cod, Matr;
R4  R3 ÷ R2;
Álgebra Relacional

• Representação de Expressões por Árvores

R1  junte Disc e Prof Nome

onde Disc.Matr = Prof.Matr;


R2  selecione R1
onde Nivel = GR e Idade > 45; Nivel = GR e Idade > 45

R3  projete R2 em Nome;
|X| Disc.Matr = Prof.Matr

Disc Prof
Álgebra Relacional

• Representação de Expressões por Árvores


R1  selecione Disc
Nome
onde Nivel = GR;
R2  selecione Prof
onde Idade > 45; |X| Disc.Matr = Prof.Matr
R3  junte R1 e R2
onde R1.Matr = R2.Matr; Nivel = GR Idade > 45
R4  projete R3 em Nome;
Disc Prof
Cálculo Relacional

• Expressão:
{ r / P(r) }

• onde
• r é uma variável varrendo tuplas
• P(r) é uma fórmula cuja única variável livre é r
Cálculo Relacional
• Exemplos:
• Qual a matrícula dos professores que lecionam disciplinas na L520?

{t/( S ϵ Disc ) ( t = s[Matr] Λ s[End] = L520 ) }


E

• Qual o nome dos professores com mais de 45 anos que lecionam disciplinas na
GR?

{ n / ( r ϵ Prof ) ( S ϵ Disc )
E E
( n = r[Nome] Λ r[Idade] > 45 Λ s[Nivel] = GR ) Λ r[Matr] = s[Matr] ) }
EXERCÍCIOS
Exercício
• Questão 1:
• Considere o esquema relacional abaixo:
_______________
Empregado (Cod_Emp,
___________ Nome, Salario, Cod_Gerente)

• Listar o nome do empregado, juntamente com o nome do seu respectivo gerente:


a) Expressão Algébrica
b) Instrução DQL
Exercício
• Questão 1:
• Considere o esquema relacional abaixo:
_______________
Empregado (Cod_Emp,
___________ Nome, Salario, Cod_Gerente)

R1  Empregado |X| Gerente (Empregado)


Empregado.cod_gerente = Gerente.cod_emp

R2  Empregado.nome, Gerente.nome(R1)
Exercício
• Questão 1:
• Considere o esquema relacional abaixo:
_______________
Empregado (Cod_Emp,
___________ Nome, Salario, Cod_Gerente)

SELECT e.nome || ' trabalha para ' || g.nome


FROM empregado e
INNER JOIN empregado g ON(e.cod_gerente = g.cod_emp)

Você também pode gostar