Álgebra Relacional Álvaro Vinícius de Souza Coêlho [email protected].

50
Álgebra Relacional Álvaro Vinícius de Souza Coêlho [email protected]

Transcript of Álgebra Relacional Álvaro Vinícius de Souza Coêlho [email protected].

Page 1: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Álgebra Relacional

Álvaro Vinícius de Souza Coêlho

[email protected]

Page 2: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Álgebra Relacional

• Porque dizer Álgebra?

Rccba

operação

RbRa

,

Page 3: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 4: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 5: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Á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”

Page 6: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 7: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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}

Page 8: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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}

Page 9: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 10: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Definições

• Álgebra relacional: operadores– Sobre relações (não sobre tuplas individuais)

possivelmente unitárias– Resultando relações

• Permite aninhamento de operações

Page 11: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 12: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 13: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 14: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 15: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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é

Page 16: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 17: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 18: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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)

Page 19: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Representação Gráfica

União Intersecção Diferença

Page 20: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 21: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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)

Page 22: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 23: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Exemplo

Nome Sexo

Antonio MJacqueline FNúbia F

Sexo

M

F

F

Nome, Sexo(Alunos) Sexo(Alunos)

Page 24: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

=

Page 25: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 26: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 27: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 28: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 29: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 30: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 31: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Exemplo

Num Valor001 150002 175003 85

Receitas

Num Valor101 140102 155103 170

Receitas

Page 32: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Exemplo

Num Valor001 150003 85003 85

Receitas ><Receitas.valor < Despesas.ValorDespesasNum Valor101 140101 140102 155

003 85 103 170

Page 33: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 34: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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!

Page 35: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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”

Page 36: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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.

Page 37: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 38: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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!

Page 39: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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.

Page 40: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 41: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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 =><=

Page 42: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 43: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 44: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 45: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 46: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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)

Page 47: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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!

Page 48: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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

Page 49: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

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?

Page 50: Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Álgebra Relacional.

FIM!

“Quando se corta a cabeça de um intelectual, ele morre”Francis Picabia

Escher