Académique Documents
Professionnel Documents
Culture Documents
degas@uesc.br http://alvarodegas.cjb.net/
lgebra Relacional
O que
a R, b R operao a b = c c R
O que
Se e so relaes (tabelas) Uma operao sobre e precisa resultar em algum que necessariamente ser uma relao Operaes
Unrias (Seleo, Projeo) Binrias (Juno, Produto Cartesiano, Diviso, Unio, Interseco, Diferena)
Clculo e lgebra?
Sentena declarativa
Sequncia de operaes
Porque lgebra?
Um formalismo Definio de operaes sobre os conjuntos de dados til para implementar Execuo de consultas Otimizao de consultas Afinal: como garantir que as operaes (em SQL por exemplo) so efetivamente executveis? SQL implementa a lgebra Relacional
Ex:
Na prtica h diferena?
Unio
Interseco Diferena
Exemplos
Conjuntos
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 nmero) {A, B, B, B, C} {A, A, B, D} = {B, B, C} (lista cada elemento m-n vezes, no mnimo 0)
Redefinio de operaes
Definies
Sobre relaes (no sobre tuplas individuais) possivelmente unitrias Resultando relaes
Operadores definidos
Seleo Restringe tuplas (linhas) Projeo Restringe atributos (colunas) Juno Combina tuplas segundo uma condio Diviso Restringe tuplas e atributos Unio Unio das relaes (atributos iguais) Interseco Interseco das relaes (idem) Diferena Diferena das relaes (idem) Produto Cartesiano Gera combinaes
Unio
Fornecedor
Matricula 001 010 100 Nome Jos Carla Jaqueline
Cliente
Matricula 000 001 002 Nome Maria Jos Jaqueline
Fornecedor Cliente
Matricula 001 010 100 000 002 Nome Jos Carla Jaqueline Maria Jaqueline
Consideraes
Unio: operao entre duas relaes trazendo todas as tuplas presentes em qualquer delas, onde
As relaes devem ter uma estrutura similar mesmo nmero de atributos e domnios compatveis Linhas duplicadas so eliminadas
Interseco
Fornecedor
Matricula 001 010 100 Nome Jos Carla Jaqueline
Cliente
Matricula 000 001 002 Nome Maria Jos Jaqueline
Fornecedor Cliente
Matricula 101 Nome Jos
Consideraes
Interseo: operao entre duas relaes trazendo todas as tuplas presentes em ambas.
As relaes devem ter uma estrutura similar mesmo nmero de atributos e domnios compatveis Linhas duplicadas so eliminadas
Diferena
Fornecedor
Matricula 001 010 100 Nome Jos Carla Jaqueline
Cliente
Matricula 000 001 002 Nome Maria Jos Jaqueline
Fornecedor Cliente
Matricula 010 100 Nome Carla Jaqueline
Consideraes
Diferena: operao entre duas relaes resultando em tuplas que esto na primeira e no na segunda.
A - B diferente de B - A (mostre)
Em SQL
Select from FORNECEDOR UNION / INTERSECTION / MINUS (EXCEPT) Select from CLIENTE
Representao Grfica
Unio Interseco Diferena
Seleo condio(relao)
Unrio: opera sobre uma relao apenas Gera uma relao contendo todos os atributos das tuplas selecionadas
Exemplo
Alunos
Matricula 01001 01002 02001 Nome Antnio Jaqueline Nbia Sexo M F F Curso Comp Comp Quim
Sexo=F(Alunos)
Matricula 01002 02001
Sexo F F
Sexo=F Curso=Quim(Alunos)
Matricula 02001 Nome Nbia Sexo F Curso Quim
Exemplo
Alunos
Matricula 01001 01002 02001 Nome Antnio Jaqueline Nbia Sexo M F F
Sexo=F(Alunos)
Matricula 01002 02001
Sexo F F
Sexo=F Curso=Quim(Alunos)
Matricula 02001 Nome Nbia Sexo F Curso Quim
Exemplo
Alunos
Matricula 01001 01002 02001 Nome Antnio Jaqueline Nbia Sexo M F Curso Comp
Sexo=F(Alunos)
Matricula 01002 02001
Em SQL Comp Select Quim F FROM Alunos WHERE Curso Sexo = 'F' AND Sexo Curso='Quim'
F F Comp Quim
Sexo=F Curso=Quim(Alunos)
Matricula 02001 Nome Nbia Sexo F Curso Quim
Projeo A1,A2An(relao)
E alguns atributos
Exemplo
Nome, Sexo(Alunos)
Nome Antonio Jacqueline Nbia Sexo M F F
Sexo(Alunos)
Sexo M F F
Exemplo
Nome, Sexo(Alunos)
Nome Antonio Jacqueline Nbia Sexo M F F
Sexo(Alunos)
Sexo M F F
Exemplo
Nome, Sexo(Alunos)
Nome Antonio Jacqueline Nbia Sexo M F F
Sexo(Alunos)
Sexo M F F
Propriedades
Seleo
Comutativa: cond1 (cond2 (R)) = cond2 (cond1 (R)) Seleo de selees Conjuno de condies
Projeo
Projees + Selees
Matrcula e Salrio dos funcionrios do departamento 5 que recebem at 500 numat, sal ( ndepto = 5 sal<=300 (Empregado) ) Salrio dos funcionrios do departamento 5 OU do sexo feminino (duas opes: qual a melhor?) sal ( ndepto = 5 sexo='F' (Empregado) )
Operaes Acessrias
Alias ()
Emp5
ndepto = 5
(Empregado)
Emp5ns nominic, sal (Emp5) Emp5Fs sal ( ndepto = 5 sexo='F' (Empregado) ) NomeSal(nome, salario)
Renomear
Emp5ns ( nominic, sal ( ndepto = 5 (Empregado) ) ) Emp5Fs ( sal ( ndepto = 5 sexo='F' (Empregado) ) )
Operaes Acessrias
Alias ()
Em SQL Create view emp5 as Emp5 ndepto = 5 (Empregado) Select * From Empregado Emp5ns nominic, sal (Emp5) Where ndepto=5
Emp5Fs sal ( ndepto = 5 sexo='F' (Empregado) ) NomeSal(nome, salario)
Renomear
Emp5ns ( nominic, sal ( ndepto = 5 (Empregado) ) ) Emp5Fs ( sal ( ndepto = 5 sexo='F' (Empregado) ) )
Operaes Acessrias
Alias ()
Em SQL Create view emp5ns as Emp5ns nominic, sal (Emp5) Select nomicic, sal From Emp5
Emp5
ndepto = 5
(Empregado)
Renomear
Emp5ns ( nominic, sal ( ndepto = 5 (Empregado) ) ) Emp5Fs ( sal ( ndepto = 5 sexo='F' (Empregado) ) )
Operaes Acessrias
Alias ()
Em SQL Create view emp5Fs as Emp5 ndepto = 5 (Empregado) Select sal Empregado Emp5ns nominic, sal From (Emp5) Where ndepto=5 OR sexo='F'
Emp5Fs sal ( ndepto = 5 sexo='F' (Empregado) ) NomeSal(nome, salario)
Renomear
Emp5ns ( nominic, sal ( ndepto = 5 (Empregado) ) ) Emp5Fs ( sal ( ndepto = 5 sexo='F' (Empregado) ) )
Operaes Acessrias
Alias ()
Emp5
ndepto = 5
(Empregado)
Em SQL NomeSal(nome, salario) nominic, sal (Emp5) Select * from ( Select sal as Emp5FS Renomear From Empregado Emp5ns ( nominic, salWhere ( ndepto = ) 5 (Empregado) ndepto=5 OR )sexo='F' )
Gera uma relao cujas tuplas so todas as combinaes das tuplas das relaes originais
A A B C A X Y
X Y X Y X Y
B B C C
Exemplo
Cursos
Cod Comp Filos Quim Nome_Curso B. Cincia da Computao B. Filosofia Quimica rea Exatas Humanas Exatas
Alunos
Matricula 01001 01002 02001 03001 Nome Antnio Jaqueline Nbia La Sexo M F F F Curso Comp Comp Quim Filos
Cursos X Alunos
C od C om p F ilo s Q u im C om p F ilo s Q u im C om p F ilo s Q u im C om p F ilo s Q u im N om e_C u rso
Exemplo (cont)
rea E x a ta s H um ana s E x a ta s E x a ta s H um ana s E x a ta s E x a ta s H um ana s E x a ta s E x a ta s H um ana s E x a ta s M a tr . 01001 01001 01001 01002 01002 01002 02001 02001 02001 03001 03001 03001 N om e A n t n io A n t n io A n t n io J a q u e lin e J a q u e lin e J a q u e lin e N b ia N b ia N b ia L a L a L a Sexo M M M F F F F F F F F F C u rso C om p C om p C om p C om p C om p C om p Q u im Q u im Q u im F ilo s F ilo s F ilo s
Cursos X Alunos
C od C om p F ilo s Q u im C om p F ilo s Q u im C om p F ilo s Q u im C om p F ilo s Q u im N om e_C u rso
Exemplo
rea E x a ta s H um ana s E x a ta s E x a ta s H um ana s E x a ta s E x a ta s H um ana s E x a ta s E x a ta s H um ana s E x a ta s
Exemplo (cont)
M a tr. 01001 01002 02001 03001 N om e A n t n io J a q u e lin e N b ia L a Sexo M F F F C u rso C om p C om p Q u im F ilo s
E x a ta s E x a ta s E x a ta s H um anas
Exemplo
E x a ta s E x a ta s E x a ta s H um anas
Condio baseada em atributos das relaes compartilhando um domnio. As tuplas das relaes so combinadas quando condio for verdadeira. Geralmente a condio uma igualdade entre atributos
Exemplo
Cursos
Cod Comp Filos Quim Nome_Curso B. Cincia da Computao B. Filosofia Quimica rea Exatas Humanas Exatas
Alunos
Matricula 01001 01002 02001 03001 Nome Antnio Jaqueline Nbia La Sex o M F F F Curso Com p Com p Quim Filos
Exemplo
Cursos
Cursos.cod = Alunos.Curso
Alunos
C od C om p C om p Q u im F ilo s
rea E x a ta s E x a ta s E x a ta s H um an
N om e A n t n io J a q u e lin e N b ia L a
Sexo M F F F
C u rso C om p C om p Q u im F ilo s
Exemplo
Cursos
Cursos.cod = Alunos.Curso
Alunos
C od C om p C om p Q u im F ilo s
rea E x a ta s E x a ta s E x a ta s H um an
N om e A n t n io J a q u e lin e N b ia L a
Sexo M F F F
C u rso C om p C om p Q u im F ilo s
Em SQL
Juno Igual
Outras condies podem utilizadas em uma juno, como maior, menor, between, etc.
Exemplo
Receitas
Num 001 002 003 Valor 150 175 85
Despesas
Num 101 102 103 Valor 140 155 170
Exemplo
Receitas
Num 001 003 003 003
Despesas
Exemplo
Receitas
Num 001 003 003 003
Despesas
Em SQL
Uma Juno Natural um Equijoin onde um dos atributos idnticos eliminado. Combina as tuplas de duas relaes que tem atributos comuns (mesmo nome), Gera uma relao com tuplas onde atributos comuns apresentam o mesmo valor. Um dos atributos idnticos eliminado, evitando a duplicidade
Exemplo
Observar os atributos Com mesmo nome!
Cursos
Curso Comp Filos Quim Nome_Curso B. Cincia da Computao B. Filosofia Quimica Nome Antnio Jaqueline Nbia La Sex o M F F F rea Exatas Humanas Exatas Curso Com p Com p Quim Filos
Alunos
Matricula 01001 01002 02001 03001
Exemplo
Cursos
C u rso C om p C om p Q u im F ilo s
*Alunos
rea E x a ta s E x a ta s E x a ta s H um an M a tr . 01001 01002 02001 03001 N om e A n t n io J a q u e lin e N b ia L a Sexo M F F F
Exemplo
Cursos
C u rso C om p C om p Q u im F ilo s
*Alunos
rea E x a ta s E x a ta s E x a ta s H um an M a tr . 01001 01002 02001 03001 N om e A n t n io J a q u e lin e N b ia L a Sexo M F F F
O modelo relacional definiu o operador de juno apenas com as caractersticas apresentadas at aqui. Posteriormente este tipo ficou conhecido como Inner Join e a operao de juno foi estendida com a definio de Outer Join. Inner Join seleciona apenas as tuplas com valores iguais As que no esto relacionadas so omitidas
Exemplo
Funcionarios
Mat 301 482 127 185 079 246 128 248 Nome Joo Miguel Roberto Dora Esmeralda Jaqueline Leandro Marcos Setor 01 02 04 02 01 03
Setores
Setor 01 02 03 04 05 06 Nome_Setor Rec. Humanos Contabilidade Vendas Diretoria Informtica Patrimnio
Exemplo
Funcionarios
Mat 301 482 127 185 079 246 Nome Joo Miguel Roberto Dora Esmeralda Jaqueline
Setores
Setor 01 02 04 02 01 03
Uma extenso do operador de juno: tratamento de tuplas no relacionadas. Mantm na relao resultante TODAS as tuplas de uma ou mais relaes participantes da juno.
Se desejamos incluir tuplas de uma relao mesmo que os valores no sejam pareados na outra. Outer Join = Inner Join + Tuplas da relao sem correspondncia
As tuplas sem correspondncia tem seus atributos da juno completados com nulos
Funcionarios = Setores
Mat 301 482 127 185 079 246 128 248 Nome Joo Miguel Roberto Dora Esmeralda Jaqueline Leandro Marcos Setor 01 02 04 02 01 03
Left Join
Nome_Setor Rec. Humanos Contabilidade Diretoria Contabilidade Rec. Humanos Vendas
Funcionarios = Setores
Mat 301 482 127 185 079 246 128 248 Nome Joo Miguel Roberto Dora Esmeralda Jaqueline Leandro Marcos Setor 01 02 04 02 01 03
Left Join
Nome_Setor Rec. Humanos Contabilidade Diretoria Contabilidade Rec. Humanos Vendas
Em SQL Inner Join + Tuplas no relacionadas Select * da relao esquerda From funcionarios NATURAL LEFT JOIN Aunos
Right Join
Funcionarios = Setores
Mat 301 482 127 185 079 246 Nome Joo Miguel Roberto Dora Esmeralda Jaqueline Setor 01 02 04 02 01 03 05 06 Nome_Setor Rec. Humanos Contabilidade Diretoria Contabilidade Rec. Humanos Vendas Informtica Patrimnio
Right Join
Funcionarios = Setores
Mat 301 482 127 185 079 246 Nome Joo Miguel Roberto Dora Esmeralda Jaqueline Setor 01 02 04 02 01 03 05 06 Nome_Setor Rec. Humanos Contabilidade Diretoria Contabilidade Rec. Humanos Vendas Informtica Patrimnio
Em SQL Inner Join + Tuplas no relacionadas Select * da relao direita From funcionarios NATURAL LEFT JOIN Aunos
Funcionarios == Setores
Mat Nome Joo Miguel Roberto Dora Esmeralda Jaqueline Leandro Marcos 05 06 Setor 01 02 04 02 01 03 301 482 127 185 079 246 128 248
Full Join
Nome_Setor Rec. Humanos Contabilidade Diretoria Contabilidade Rec. Humanos Vendas
Informtica Patrimnio
Funcionarios == Setores
Mat Nome Joo Miguel Roberto Dora Esmeralda Jaqueline Leandro Marcos 05 06 Setor 01 02 04 02 01 03 301 482 127 185 079 246 128 248
Full Join
Nome_Setor Rec. Humanos Contabilidade Diretoria Contabilidade Rec. Humanos Vendas
Informtica Patrimnio
Select * Inner Join + Tuplas no relacionadas From funcionarios das relao direita e esquerda NATURAL FULL JOIN Aunos
Em SQL
Junes podem gerar alto custo computacional Junes no conhecem regras de integridade
Exceto se forem instrudas a faz-lo Select * from r1 LEFT/RIGHT/FULL JOIN r2 on CONDIO R1 =condio R2 R1 =condio R2 R1 ==condio R2
Exerccios
Expresses na lgebra Relacional para recuperar Nome e salrio dos empregados que esto lotados no Departamento de Pesquisa.
Lista de nmeros de projetos que tenham um Silva (ltimo nome) que trabalha nele ou que seja chefe do departamento que o controla. Nomes dos empregados que no tm dependentes. Nomes dos empregados e nomes de seus supervisores diretos
( Departamento ) ) )
Lista de nmeros de projetos que tenham um Silva (ltimo nome) que trabalha nele ou que seja chefe do departamento que o controla.
nominic, numproj(nomefim=Silva(Empreg )numat=empnumTrab))
nominic, nomefim
(Empreg)
nominic, nomefim
(Empreg Depen)
numat=empnum
Diviso Relao1Relao2
Uma o dividendo e outra o divisor As relaes devem possuir um ou mais atributos em comum (mesmos nomes) A relao dividendo (A) deve possuir atributos adicionais
Fazendo A
Resultado
Atributos: os da relao dividendo (A) que no fazem parte da relao divisor (B). Tuplas: as da relao dividendo (A) que satisfazem a comparao com todas as tuplas da relao divisor (B)
Exemplo
M a tF u n c 301 301 301 482 482 127 127 127 P roj 73 02 11 02 11 73 43 02
P roj 02 11
M a tF u n c 301 482
O atributo exclusivo da primeira relao, com tuplas onde ele se casa com atributos da segunda relao!
Projeo generalizada
Usar expresses e clculos nas projees Para cada dependente informar o ltimo nome do empregado de quem ele depende, o nome do dependente e a diferena de idade entre o empregado e o dependente.
(E(Empreg)
numat=numemp
D(Depen) )
Projeo generalizada
Usar expresses e clculos nas projees Para cada dependente informar o ltimo nome do empregado de quem ele depende, o nome do dependente e a diferena de idade entre o empregado e o dependente.
(E(Empreg)
numat=numemp
D(Depen) )
Em SQL
Agrupamento -
Atributos de agrupamento Funes de agregao TODAS AS COLUNAS QUE SO PROJETADAS OU ESTO EM FUNES OU SO ATRIBUTOS DE AGREGAO!
Cdigo dos projeto, e o total de horas trabalhadas e o total de empregados que trabalham em cada um deles.
Agrupamento -
Select numproj, count(*), sum(horas) Atributos de agrupamento From trabalhaem Funes de agregao Goup by numproj TODAS AS COLUNAS QUE SO PROJETADAS OU ESTO EM FUNES OU SO ATRIBUTOS DE AGREGAO!
Em SQL
Cdigo dos projeto, e o total de horas trabalhadas e o total de empregados que trabalham em cada um deles.
Ordenao
L (R)
Ordena as projees Lista de aniversariantes: empregados e dependentes em ordem alfabtica do nome e em seguida na ordem drescente da data de nascimento
Ordenao
L (R)
(Select nominic, dtnasc from empregado Lista de aniversariantes: empregados e Union dependentes em ordem alfabtica do nome e Select depend nominic dtnasc from dependente) BY nominic, dtnasc em seguida na ORDER ordem drescente da data de nascimento
Quando se trabalha com uma lgebra estendida que permita a repetio de tuplas SQL Exemplo: Relacione quais so os salrios que so pagos no departamento 5.
Quando se trabalha com uma lgebra Select DISTINCT sal empregado estendida que permita a repetio From de tuplas SQL
Where ndepto=5
Em SQL
lgebra Relacional
"Se a Religio recusa caminhar com a Cincia, a Cincia avana sozinha. " (Allan Kardec)