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

Post on 18-Apr-2015

111 views 0 download

Transcript of Álgebra Relacional Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br.

Á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