Álgebra relacional Álvaro vinícius de souza coêlho alvaro.degas@terra.com.br
Post on 18-Apr-2015
110 Views
Preview:
TRANSCRIPT
Álgebra Relacional
Álvaro Vinícius de Souza Coêlho
alvaro.degas@terra.com.br
Álgebra Relacional
• Porque dizer Álgebra?
Rccba
operação
RbRa
,
Para o caso da Álgebra Relacional
• Se e são relações (tabelas)
• Uma operação sobre e precisa resultar em algum que igualmente será uma relação
Para que Álgebra Relacional?
• Um formalismo• Definição de operações sobre os conjuntos de
dados• Útil para implementar
– Execução de consultas– Otimização de consultas
• Afinal: como garantir que as operações (em SQL por exemplo) são efetivamente executáveis?
• SQL “implementa” a Álgebra Relacional
Álgebra de “Sacos” e de Conjuntos
• Conjuntos – coleção de exemplares– Sem repetição
• Sacos – coleção de objetos– Com repetição
• Ex:– {A, B, C} é um conjunto– {A, B, B, C, C} é um “saco”
Na prática há diferença?
• Há operações sobre conjuntos que são análogas– União
• Conjuntos: Omitem as repetições
• Sacos: Permite repetições
– Intersecção– Diferença
Exemplos
• Conjuntos– {A, B, C, D} {A, C, D, E} = {A, B, C, D, E}– {A, B, C, D} {A, C, D, E} = {A, C, D}– {A, B, C, D} – {A, C, D, E} = {B}
• Operar {1, 3, 5, 7, 9, 11, 13} com {2, 3, 5, 7, 11, 13}
Exemplos
• Sacos– {A, B, B, B, C} {A, A, B, D} = {A, A, A, B,
B, B, C, D} (lista cada elemento m+n vezes)– {A, B, B, B, C} {A, A, B, D} = {A, B} (lista
cada elemento m vezes, m o menor número)– {A, B, B, B, C} – {A, A, B, D} = {B, B, C}
(lista cada elemento m-n vezes, no mínimo 0)
• Operar {1, 1, 2, 2, 2, 3, 4} com {1, 2, 3, 5}
Para efeitos práticos
• Redefinição de operações– União e União Total (Union e Union All)
• União elimina as duplicações
– Intersecção e Intersecção Total (Intersection e Intersection All)
• Intersecção elimina as duplicações
– Diferença e Diferença Total (Minus e Minus All)
• Diferença elimina duplicações
Definições
• Álgebra relacional: operadores– Sobre relações (não sobre tuplas individuais)
possivelmente unitárias– Resultando relações
• Permite aninhamento de operações
Operadores definidos
• Seleção – Restringe tuplas (linhas)• Projeção – Restringe atributos (colunas)• Junção – Combina tuplas segundo uma condição• Divisão – Restringe tuplas e atributos• União – União das relações (atributos iguais)• Intersecção – Intersecção das relações (idem)• Diferença – Diferença das relações (idem)• Produto Cartesiano – Gera combinações
Observação importante
• As linguagens disponíveis para acesso a Bancos de Dados relacionais, incluindo SQL, não utilizam os mesmos operadores ou nomes definidos pela álgebra relacional. Entretanto todos os operadores da álgebra relacional podem ser escritos usando estas linguagens
UniãoFornecedor Cliente
Matricula Nome
001 José
010 Carla
100 Jaqueline
Matricula Nome
000 Maria
001 José
002 Jaqueline
Fornecedor ClienteMatricula Nome
001 José
010 Carla
100 Jaqueline
000 Maria
002 Jaqueline
Considerações• União é a operação entre duas tabelas cujo
resultado contém todas as linhas presentes em uma das tabelas originais ou em ambas, onde– As tabelas devem ter uma estrutura similar,
com o mesmo número de colunas e domínios compatíveis dos atributos correspondentes.
– Linhas duplicadas são eliminadas
IntersecçãoFornecedor Cliente
Matricula Nome
001 José
010 Carla
100 Jaqueline
Matricula Nome
000 Maria
001 José
002 Jaqueline
Fornecedor Cliente
Matricula Nome
101 José
Considerações
• Interseção é a operação entre duas tabelas de estrutura similar cujo resultado contém todas as linhas presentes em ambas.– Linhas duplicadas são eliminadas
DiferençaFornecedor Cliente
Matricula Nome
001 José
010 Carla
100 Jaqueline
Matricula Nome
000 Maria
001 José
002 Jaqueline
Fornecedor – ClienteMatricula Nome
010 Carla
100 Jaqueline
Considerações
• Diferença é a operação entre duas tabelas de estrutura similar cujo resultado contém todas as linhas que estão na primeira tabela e não aparecem na segunda.– A - B é diferente de B - A (mostre)
Representação Gráfica
União Intersecção Diferença
Seleção condição(relação) • O operador de seleção opera sobre uma
relação• Gera uma relação contendo todos os
atributos das tuplas selecionadas
Exemplo
Matricula Nome Sexo Curso
01001 Antônio M Comp
01002 Jaqueline F Comp
02001 Núbia F Quim
Matricula Nome Sexo Curso
01002 Jaqueline F Comp
02001 Núbia F Quim
Matricula Nome Sexo Curso
02001 Núbia F Quim
Alunos
Sexo=’F’(Alunos)
Sexo=’F’ Curso=’Quim’(Alunos)
Projeção A1,A2…An(relação)
• A operação de projeção opera sobre uma relação gerando outra que contém todas as tuplas da original, com alguns de seus atributos
Exemplo
Nome Sexo
Antonio MJacqueline FNúbia F
Sexo
M
F
F
Nome, Sexo(Alunos) Sexo(Alunos)
Produto CartesianoRelação1 X Relação2
• O operador produto cartesiano combina duas relações gerando uma cujas tuplas são as possíveis combinações das tuplas das relações originais
A
B
C
X
Y
A X
A Y
B X
B Y
C X
C Y
=
Exemplo
Cod Nome_Curso ÁreaComp B. Ciência da Computação ExatasFilos B. Filosofia HumanasQuim Quimica Exatas
Matricula Nome Sexo
Curso
01001 Antônio M Comp01002 Jaqueline F Comp02001 Núbia F Quim03001 Léa F Filos
Cursos
Alunos
Exemplo (cont)Cod Nome_Curso Área Matr. Nome Sexo Curso
Comp B. Ciência da Computação Exatas 01001 Antônio M Comp
Filos B. Filosofia Humanas
01001 Antônio M Comp
Quim Quimica Exatas 01001 Antônio M Comp
Comp B. Ciência da Computação Exatas 01002 Jaqueline
F Comp
Filos B. Filosofia Humanas
01002 Jaqueline
F Comp
Quim Quimica Exatas 01002 Jaqueline
F Comp
Comp B. Ciência da Computação Exatas 02001 Núbia F Quim
Filos B. Filosofia Humanas
02001 Núbia F Quim
Quim Quimica Exatas 02001 Núbia F Quim
Comp B. Ciência da Computação Exatas 03001 Léa F Filos
Filos B. Filosofia Humanas
03001 Léa F Filos
Quim Quimica Exatas 03001 Léa F Filos
Cursos X Alunos
JunçãoRelação1><condição Tabela_2
• O operador de junção combina as tuplas de duas relações segundo uma ou mais condições. – A condição de junção deve ser baseada em um
ou mais atributos de cada uma das relações cujos valores compartilhem um domínio comum.
– As linhas das relações são combinadas sempre que a condição de junção for verdadeira.
– Geralmente a condição é uma igualdade entre atributos
Exemplo
Cod Nome_Curso ÁreaComp B. Ciência da Computação ExatasFilos B. Filosofia HumanasQuim Quimica Exatas
Matricula Nome Sexo
Curso
01001 Antônio M Comp01002 Jaqueline F Comp02001 Núbia F Quim03001 Léa F Filos
Cursos
Alunos
Exemplo
Cod Nome_Curso Área Matr. Nome Sexo Curso
Comp B. Ciência da Computação Exatas 01001 Antônio M CompComp B. Ciência da Computação Exatas 01002 Jaquelin
eF Comp
Quim Quimica Exatas 02001 Núbia F Quim
Filos B. Filosofia Human 03001 Léa F Filos
Cursos ><Cursos.cod = Alunos.Curso Alunos
Junção Igual
• Quando a condição de uma junção é a igualdade, a junção é chamada de Equijoin (observar que a tabela resultante terá sempre duas colunas idênticas).
• Além da igualdade outras condições podem utilizadas em uma junção, como maior
Exemplo
Num Valor001 150002 175003 85
Receitas
Num Valor101 140102 155103 170
Receitas
Exemplo
Num Valor001 150003 85003 85
Receitas ><Receitas.valor < Despesas.ValorDespesasNum Valor101 140101 140102 155
003 85 103 170
Junção NaturalRelação1><Relação2
• Uma Junção Natural é um Equijoin onde um dos atributos idênticos é eliminado.
• O operador de junção natural combina as tuplas de duas relações que tem atributos comuns (mesmo nome), resultando numa relação que contém apenas as tuplas onde todos os atributos comuns apresentam o mesmo valor.
• Um dos atributos idênticos é eliminado, evitando a duplicidade
Exemplo
Curso Nome_Curso ÁreaComp B. Ciência da Computação ExatasFilos B. Filosofia HumanasQuim Quimica Exatas
Cursos
Matricula Nome Sexo
Curso
01001 Antônio M Comp01002 Jaqueline F Comp02001 Núbia F Quim03001 Léa F Filos
Alunos
Observar os atributosCom mesmo nome!
Exemplo
Curso Nome_Curso Área Matr. Nome Sexo
Comp B. Ciência da Computação Exatas 01001 Antônio MComp B. Ciência da Computação Exatas 01002 Jaquelin
eF
Quim Quimica Exatas 02001 Núbia F
Filos B. Filosofia Human 03001 Léa F
Cursos ><Alunos
Um único atributo “Curso”
Junção Interna (Inner Join)• Originalmente o modelo relacional definiu o
operador de junção apenas com as características apresentadas até aqui. Posteriormente este tipo ficou conhecido como Inner Join e a operação de junção foi estendida com a definição de Outer Join.
• Em um Inner Join existe a possibilidade de que algumas das tuplas de uma ou ambas as relações de uma junção não façam parte da tabela resultante.
Exemplo
Mat Nome Setor301 João 01482 Miguel 02127 Roberto 04185 Dora 02079 Esmeralda 01246 Jaqueline 03128 Leandro248 Marcos
FuncionariosSetor
Nome_Setor01 Rec. Humanos02 Contabilidade03 Vendas04 Diretoria05 Informática06 Patrimônio
Setores
Exemplo
Mat Nome Setor Nome_Setor301 João 01 Rec. Humanos482 Miguel 02 Contabilidade127 Roberto 04 Diretoria185 Dora 02 Contabilidade079 Esmeralda 01 Rec. Humanos246 Jaqueline 03 Vendas
Funcionarios >< Setores
Funcionários sem setor não são relacionados!
Junção Externa (Outer Join)
• O Outer Join é uma extensão do operador de junção utilizado para tratamento de ausência de informações.
• A operação Outer Join mantém na relação resultante TODAS as tuplas de uma ou mais relações participantes da junção.
Junção Externa (Outer Join)
• Utilizada quando é necessário incluir tuplas de uma relação onde os valores não têm correspondência com a outra.
• Outer Join = Resultado do Inner Join + Tuplas da relação sem
correspondência (na outra relação do join)
• As tuplas da relação que não tem correspondência são completadas com nulos
Junção Externa (Outer Join)
• Foram definidos três tipos de Outer Joins entre duas relações:– Left Outer Join =><– Right Outer Join ><=– Full Outer Join =><=
Left Outer Join
Mat Nome Setor Nome_Setor301 João 01 Rec. Humanos482 Miguel 02 Contabilidade127 Roberto 04 Diretoria185 Dora 02 Contabilidade079 Esmeralda 01 Rec. Humanos246 Jaqueline 03 Vendas128 Leandro
248 Marcos
Funcionarios =>< Setores
Inner Join + Tuplas não relacionadas da relação à esquerda
Right Outer Join
Mat Nome Setor Nome_Setor301 João 01 Rec. Humanos482 Miguel 02 Contabilidade127 Roberto 04 Diretoria185 Dora 02 Contabilidade079 Esmeralda 01 Rec. Humanos246 Jaqueline 03 Vendas 05 Informática 06 Patrimônio
Funcionarios ><= Setores
Inner Join + Tuplas não relacionadas da relação à direita
Full Outer JoinMat Nome Setor Nome_Setor301 João 01 Rec. Humanos482 Miguel 02 Contabilidade127 Roberto 04 Diretoria185 Dora 02 Contabilidade079 Esmeralda 01 Rec. Humanos246 Jaqueline 03 Vendas128 Leandro
248 Marcos
05 Informática 06 Patrimônio
Funcionarios =><= Setores
Inner Join + Tuplas não relacionadas das relação à direita e à esquerda
DivisãoRelação1Relação2
• Divisão é a operação entre duas relações onde:– Uma é o dividendo e outra o divisor– As relações devem possuir um ou mais
atributos em comum– A relação dividendo (A) deve possuir atributos
adicionais
DivisãoRelação1Relação2
• Divisão é a operação entre duas relações onde:– A relação resultante é formada pelos atributos
da relação dividendo (A) que não fazem parte da relação divisor (B).
– A relação resultante contém apenas tuplas da relação dividendo (A) que satisfazem a comparação com todas as tuplas da relação divisor (B)
Exemplo
MatFunc Proj301 73301 02301 11482 02482 11127 73127 43127 02
Proj0211
MatFunc301482=
O atributo que sobra da primeira relação, com os valores que ele possui nas tuplas onde ele se casa com algum atributo da segunda relação!
Operações Aninhadas
• Para o uso efetivo da álgebra relacional
• Por ser “álgebra”– Operadores sobre elementos de certos
conjuntos (relações)– O resultado de qualquer operação pertende ao
mesmo conjunto (relações)
• Pode-se usar o resultado de uma operação como entrada para outra
Exemplos
Nome, Matricula (departamento= ‘DCET’ ( ALUNO ><
CURSO))
Nome, Matricula (ALUNO >< (departamento= ‘DCET’
(CURSO) ) )
• O nome e a matrícula dos alunos matriculados em cursos do DCET
• Qual a diferença?
Álgebra Relacional.
FIM!
“Quando se corta a cabeça de um intelectual, ele morre”Francis Picabia
Escher
top related