Sei sulla pagina 1di 58

lgebra Relacional

Andr Luiz do Vale Soares

12/10/2009

Roteiro
Operaes Relacionais Unrias
Seleo, Projeo e Rebatizamento

Operaes sobre Conjuntos


Unio, Interseo, Diferena Produto Cartesiano

Operaes Relacionais Binrias


Junes e Diviso

Operaes de Agregamento
12/10/2009

Esquema Exemplo
Estado do banco de dados CONCURSO

12/10/2009

Operaes Relacionais Unrias


Seleo (Select)
Usada para selecionar um subconjunto de tuplas de uma relao que satisfaa uma condio de seleo. Particionamento Horizontal da relao em dois conjuntos de tuplas: as que satisfazem a condio e as que no satisfazem a condio de seleo.
12/10/2009

Operaes Relacionais Unrias


Seleo (Select)
Notao: (smbolo sigma)
R <condio de seleo> (S) onde a condio de seleo uma expresso booleana, especificada nos atributos da relao S. S , geralmente, uma expresso de lgebra relacional. O resultado da operao de seleo uma relao R com os mesmos atributos de S.
12/10/2009

Operaes Relacionais Unrias


Seleo (Select)
Condio de Seleo:
Geralmente composta por expresses booleanas na forma:
<nome do atributo> <operador de comparao> <valor da constante>

Onde o operador de comparao pode ser =, , , , >, < As clusulas podem ser conectadas por operadores de disjuno (OR) ou conjuno (AND)

12/10/2009

Operaes Relacionais Unrias


Seleo (Select)
Exemplo:
Listar todos os avaliadores com ttulo de mestre:
R <Titulao=Mestre> (PROFESSOR)

12/10/2009

Operaes Relacionais Unrias


Seleo (Select)
Exemplos:
Listar todos as provas escritas da rea de Computao:
R <rea=Computao AND Tipo=Escrita> (PROVA)

12/10/2009

Operaes Relacionais Unrias


Propriedades da Seleo (Select)
Comutatividade:
<condio 1>( <condio 2> (R)) = <condio 2> ( <condio 1> (R))

Propagao:
<cond 1>( <cond 2> (...( <cond n>(R)...) = <cond 1> AND <cond 2> AND
... AND <cond n>

(R)

12/10/2009

Operaes Relacionais Unrias


Projeo (Project)
Usada para selecionar um subconjunto de atributos de uma relao. Particionamento Vertical da relao.

12/10/2009

Operaes Relacionais Unrias


Projeo (Project)
Notao: (smbolo pi)
R <lista de atributos> (S) S , geralmente, uma expresso de lgebra relacional ou uma relao simples do banco de dados. O resultado da operao de projeo uma relao R com os atributos especificados de S, na mesma ordem em que aparecem na lista. A operao de Projeo REMOVE quaisquer tuplas repetidas

12/10/2009

Operaes Relacionais Unrias


Projeo (Project)
Exemplo:
Listar todos os nomes dos candidatos inscritos no concurso:
R <Nome> (CANDIDATO)

12/10/2009

Operaes Relacionais Unrias


Projeo (Project)
Exemplo:
Listar os nomes de todos os avaliadores com ttulo de mestre:
S R <Titulao=Mestre> (PROFESSOR) nome (S)

OU R nome( <Titulao=Mestre> (PROFESSOR))

12/10/2009

Operaes Relacionais Unrias


Propriedades da Projeo (Project)
O nmero de tuplas da relao resultante R menor ou igual ao nmero de tuplas de S. Comutatividade: No Aplicvel
<lista 1> ( <lista 2> (R)) = <lista 1> (R) Desde que <lista 2> contenha os atributos de <lista 1>, caso contrrio, a operao estar incorreta.
12/10/2009

Operaes Relacionais Unrias


Rebatizar (Rename)
Usada para renomear os atributos das relaes resultantes em operaes da lgebra relacional. Exemplo:
Listar os nomes de todos os avaliadores com ttulo de mestre:
R (Professor) nome ( <Titulao=Mestre> (PROFESSOR))

12/10/2009

Operaes Relacionais Unrias


Exerccios:
Elabore consultas utilizando operadores da lgebra Relacional para listar:
1. Os nomes dos departamentos da Empresa. 2. Os nomes dos funcionrios do sexo masculino da Empresa. 3. Os nomes das esposas dos funcionrios da empresa que estiverem no cadastro de dependentes. 4. O nome da localizao do projeto de nmero 5. 5. A matrcula do gerente do departamento Contabilidade. 6. As matrculas dos empregados que trabalhem mais de 20 horas em qualquer projeto. 7. Os nmeros de projetos em que o empregado de matrcula 10 trabalha. 8. Os nomes dos empregados dos sexo feminino, supervisionadas pelo empregado de matrcula 120. 9. Os nomes dos departamentos gerenciados pelo empregado de matrcula 534 ou gerenciados a partir de 01-Janeiro-2004.
12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos Diferentemente das operaes unrias, so aplicadas em duas relaes, a fim de obter uma terceira como resultado da operao aplicada. So baseadas em operaes sobre conjuntos: Unio, Interseo e Diferena As relaes sobre as quais efetuada a operao devem ser unio-compatveis.

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos

Relaes Unio-Compatveis:
Duas relaes R (A1, A2, , An) e S (B1, B2, , Bn) so ditas unio-compatveis se:
Tiverem o mesmo grau n; dom(Ai) = dom(Bi), para 1 i n.

Ou seja, as duas relaes tm o mesmo nmero de atributos e cada par correspondente de atributos tem o mesmo domnio.
12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos

Operao de Unio ():


O resultado dessa operao, indicada por:
R ST

uma relao R que inclui todas as tuplas que esto em S, ou em T, ou em ambas, S e T. As tuplas repetidas so eliminadas.

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos

Operao de Interseo ():


O resultado dessa operao, indicada por:
R ST

uma relao R que inclui todas as tuplas que esto em ambas, S e T.

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos

Operao de Diferena (-):


O resultado dessa operao, indicada por:
R S-T

uma relao R que inclui todas as tuplas que esto em S, mas no esto em T.

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos Exemplos:


Listar os nomes dos professores e dos candidatos inscritos no concurso. Cand nome (CANDIDATO)
Prof R

nome (PROFESSOR)
Cand Prof

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos Exemplos:


Listar os nomes dos professores que realizaram alguma avaliao: AVAL (Nome) Professor (AVALIAO)
PROF R

nome (PROFESSOR)

PROF AVAL

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos Exemplos:


Listar os nomes dos professores que no realizaram nenhuma avaliao: AVAL (Nome) Professor (AVALIAO)
PROF R

nome (PROFESSOR)

PROF - AVAL

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos Propriedades:


Comutativivade:
Unio e Interseo so comutativas:
RS=SR RS=SR

Diferena no comutativa:
RSSR

Associatividade
Unio, interseo e diferena so associativas:
R (S T) = (R S) T R (S T) = (R S) T R (S T) = (R S) T

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos Produto Cartesiano (X):
No h necessidade das relaes envolvidas serem unio-compatveis Utilizada para gerar uma nova relao a partir de duas outras, associando suas tuplas de forma combinatria. Em geral, s possui algum sentido se combinada com uma operao de seleo, casando atributos de relaes diferentes que tenham valores iguais.
12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos

Produto Cartesiano (X):


R SXT
S (A1, A2, , An) T (B1, B2, , Bn) R (A1, A2, , An, B1, B2, , Bn) Se S possuir n tuplas e T possuir m tuplas, ento R possuir n*m tuplas.

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos

Exemplo de Produto Cartesiano (X):


Listar, para as bancas formadas: rea, sub-rea, membro, titulao e Universidade de Origem
rea, Sub-rea e Membro da banca esto na relao BANCA_MEMBROS Membro da banca, titulao e universidade de origem esto na relao PROFESSOR Temos que combinar as duas relaes para obter o resultado esperado
12/10/2009

Esquema Exemplo
Estado do banco de dados CONCURSO

Comb PROFESSOR X BANCA_MEMBROS R Nome = Membro (Comb) OU R Nome = Membro (PROFESSOR X BANCA_MEMBROS)

12/10/2009

Operaes da lgebra Relacional a Partir da Teoria dos Conjuntos

Exemplo de Produto Cartesiano (X):


Resultado:

12/10/2009

Operaes Relacionais Binrias


Juno (Join)
usada para combinar as tuplas relacionadas em duas relaes dentro de uma tupla nica. uma das operaes mais importantes aplicadas ao modelo relacional, porque implementa a associao entre relaes. Grosso modo, substitui a associao entre relaes atravs de produto cartesiano combinado seleo.

12/10/2009

Operaes Relacionais Binrias


Juno ():
R S <condio da juno> T
S (A1, A2, , An) T (B1, B2, , Bn) R (A1, A2, , An, B1, B2, , Bn) Uma tupla de R ser composta por uma tupla de S e uma de T, quando a combinao satisfizer a condio de juno.

12/10/2009

Operaes Relacionais Binrias


Juno ():
R S <condio da juno> T
Condio de juno: mesmas regras da condio de seleo, exceto que a expresso poder ser do tipo:
<nome do atributo1> <operador de comparao> <nome do atributo2>

Onde atributo1 faz parte da relao S e atributo2 faz parte da relao T.

12/10/2009

Operaes Relacionais Binrias


Juno ():
Exemplo: Listar nome dos candidatos que realizaram provas da rea de Computao.
CAND_COMP R inscrio (rea=ComputaoPROVAS_CANDIDATO)
candidato.inscrio = cand_comp.inscrio

nome (CANDIDATO

CAND_COMP)

12/10/2009

Operaes Relacionais Binrias


Juno ():
Variaes
Equijuno (Equijoin)
Juno em que o nico operador de comparao usado o = (igual)

Juno Natural (Natural Join)


Equijuno em que os dois atributos (ou cada par de atributos) tm o mesmo nome em ambas as relaes envolvidas. Representada por *

12/10/2009

Operaes Relacionais Binrias


Equijuno ():
Exemplo: Listar nome dos candidatos que realizaram provas da rea de Computao.
CAND_COMP R inscrio (rea=ComputaoPROVAS_CANDIDATO)
candidato.inscrio = cand_comp.inscrio

nome (CANDIDATO

CAND_COMP)

12/10/2009

Operaes Relacionais Binrias


Juno Natural (*):
Exemplo: Listar nome dos candidatos que realizaram provas da rea de Computao.
CAND_COMP R inscrio (rea=ComputaoPROVAS_CANDIDATO)

nome (CANDIDATO * CAND_COMP)

12/10/2009

Operaes Relacionais Binrias


Diviso ()
Operao peculiar da lgebra relacional, no possuindo comando na linguagem SQL para represent-la. aplicada em duas relaes: R(A) e S(B), em que A B. Se tivermos um conjunto de atributos C = A B, ou seja, C o conjunto de atributos de R que no so atributos de S. Assim, o resultado da operao ser uma relao T(C).

12/10/2009

Operaes Relacionais Binrias


Diviso ()
Para uma tupla t aparecer no resultado T da diviso de R por S, os valores em t devem aparecer em R em combinao com toda tupla em S.

12/10/2009

Operaes Relacionais Binrias


Diviso ()
Exemplo: C B A

12/10/2009

Operaes Relacionais Binrias


Diviso ()
Exemplo: Listar os nomes dos candidatos que passaram pelas duas fases do concurso, ou seja, realizaram tanto prova escrita quanto didtica.

12/10/2009

Operaes Relacionais Binrias


Resposta (possvel):
PROVAS Tipo (PROVA) Inscrio, Tipo PROV_REALIZ

(PROVAS_CANDIDATO) CAND PROV_REALIZ PROVAS R Nome CAND * CANDIDATO

12/10/2009

Operaes Relacionais Binrias


Diviso ()
Pode ser expressa como uma seqncia de operaes de projeo (), produto cartesiano (X) e diferena (-): T RS

T1 T2 T
12/10/2009

(R) ((S X T1) R) T1 T2

Operaes Relacionais Binrias


Exerccios:
Elabore consultas utilizando operadores da lgebra Relacional para listar:
1. Os nomes dos empregados que trabalham no departamento Administrao 2. Os nomes e parentescos dos dependentes do empregado Ari Frana 3. O nome do gerente do departamento Informtica 4. As Localidades do departamento Contabilidade 5. Os nomes dos projetos em que o empregado Jos da Silva trabalha 6. Os nomes e parentescos dos dependentes dos empregados do departamento Financeiro
12/10/2009

Operaes Relacionais Binrias


Exerccios:
Elabore consultas utilizando operadores da lgebra Relacionais para listar:
1. Os nomes dos empregados supervisionados por Antenor Filho 2. Os nomes dos projetos em que os empregados do departamento Informtica trabalham 3. Os nomes dos supervisores dos empregados que trabalham no projeto Pesquisa 4. Os nomes dos empregados que trabalham em departamentos com localizaes em Manaus 5. Os nomes dos gerentes dos departamentos que controlam projetos em que o empregado Iran Neves trabalha 6. Os nomes dos empregados que trabalham nos dois projetos Pesquisa e Desenvolvimento, simultaneamente
12/10/2009

Operaes de Agregamento
Inclui funes ou operaes aplicadas a um conjunto ou grupo de tuplas. Funes bsicas:
Contar Soma Mdia Mnimo Mximo

12/10/2009

Operaes de Agregamento
O agrupamento pode ser feito com base na aplicao da funo de agregamento a todo o conjunto de tuplas da relao ou a um grupo de conjuntos de tuplas, obtido a partir de valores para uma lista de atributos.

12/10/2009

Operaes de Agregamento
Notao (script F):
R
<atributos de agrupamento>

<lista de funes>

(S)

Onde:
<atributos de agrupamento> uma lista de atributos da relao S <lista de funes> uma lista de pares: <funo> <atributo>, onde a funo uma das permitidas pelas operaes de agregao.

12/10/2009

Operaes de Agregamento
Exemplo:
Listar o nmero de candidatos inscritos no concurso:
R (candidatos) contar(*) (CANDIDATO)

12/10/2009

Operaes de Agregamento
Exemplo:
Listar quantos professores doutores estaro aptos para avaliar trabalhos:
S Titulao em (Doutor,Doutora)(PROFESSOR) contar(*) (S) R (candidatos)

12/10/2009

Operaes de Agregamento
Exemplo:
Listar quantas avaliaes foram realizadas para cada professor avaliador:
R (professor,total) (AVALIACAO)
professor

contar(*)

12/10/2009

Operaes de Agregamento
Exemplo:
Listar o nome do aluno que obteve a maior nota de todas as avaliaes realizadas:
S (maior_nota) T mximo(nota) (AVALIACAO) S nota=maior_nota AVALIACAO

U CANDIDATO * T R (Candidato) nome (U)

12/10/2009

Operaes de Agregamento
Exerccios:
Elabore consultas utilizando operadores da lgebra Relacionais para listar:
1. O nome do empregado mais jovem da empresa 2. O nome do departamento que controla o maior nmero de projetos 3. O total de horas trabalhadas nos projetos, por empregado 4. O nome do empregado que possui maior nmero de dependentes 5. As quantidades de empregados dos sexos masculino e feminino que trabalham na empresa 6. O nome do departamento que mais gasta com pagamento de salrios da empresa

12/10/2009

Outras Operaes
Juno Externa:
Nas junes, apenas as tuplas de ambas as relaes envolvidas que satisfazem condio de juno so retornadas na consulta. H casos em que para uma relao seja necessrio recuperar suas tuplas, mesmo que estas no satisfaam condio de juno. Para isto, utilizamos a operao de juno externa (outter join)
12/10/2009

Outras Operaes
Juno Externa:
Pode ser aplicada:
Na relao esquerda da juno (left outer join) Na relao direita da juno (right outer join) Em ambas as relaes, esquerda e direita da juno (full outer join)

12/10/2009

Outras Operaes
Juno Externa:
Notao:
left outer join: R S T right outer join: R S T full outer join: R S T

12/10/2009

Outras Operaes
Juno Externa:
Exemplo:
Listar as notas das provas didticas por candidato:
S T U R Tipo = Didtica (AVALIACAO) Inscrio,Nota (S) Inscrio,Nome (CANDIDATO) Nome,Nota (U U.Inscrio=T.Inscrio T)

12/10/2009

Juno Externa
Exerccios:
Elabore consultas utilizando operadores da lgebra Relacionais para listar:
1. O nome de cada empregado da empresa e, se for o caso, o departamento que o mesmo gerencia 2. Os nomes dos empregados do departamento Informtica e de suas esposas, caso estas estejam cadastradas como suas dependentes
12/10/2009

Potrebbero piacerti anche