13
ÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação 1. OPERAÇÕES RELACIONAIS UNÁRIAS 1.1 SELEÇÃO (SELECT) Seleciona um subconjunto de tuplas de uma relação que satisfaça uma condição de seleção. As tuplas que satisfazem a condição são selecionadas e as que não satisfazem a condição são descartadas. Ex1: tuplas de empregado cujo departamento é 4 ou aqueles cujo salário é superior à 3000 dólares. CODDEP=4 (EMPREGADO) SALARIO>3000 (EMPREGADO) Forma geral: condição de seleção>(R) condição de seleção: expressão booleana expressão booleana: <atributo><oper. comparação><valor constante> atributo= Ai; oper. comparação= {=,<,>,<=,>=,<>}, const = dom(Ai) Obs.: a relação resultante da operação SELECT tem os mesmos atributos que R Comando em SQL: Select * from EMPREGADO where (coddep=4) Select * from EMPREGADO where (salário>3000)

rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

ÁLGEBRA RELACIONAL

ÁLGEBRA RELACIONAL:

Conjunto básico de operações para o Modelo Relacional O resultado é uma relação

1. OPERAÇÕES RELACIONAIS UNÁRIAS

1.1 SELEÇÃO (SELECT)

Seleciona um subconjunto de tuplas de uma relação que satisfaça uma condição de seleção.

As tuplas que satisfazem a condição são selecionadas e as que não satisfazem a condição são descartadas.

Ex1: tuplas de empregado cujo departamento é 4 ou aqueles cujo salário é superior à 3000 dólares.

CODDEP=4 (EMPREGADO)

SALARIO>3000 (EMPREGADO)

Forma geral: condição de seleção>(R)

condição de seleção: expressão booleana

expressão booleana: <atributo><oper. comparação><valor constante>

atributo= Ai; oper. comparação= {=,<,>,<=,>=,<>}, const = dom(Ai)

Obs.: a relação resultante da operação SELECT tem os mesmos atributos que R

Comando em SQL:

Select * from EMPREGADO where (coddep=4)

Select * from EMPREGADO where (salário>3000)

Page 2: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

Ex2.: Selecionar todos os empregados que trabalham no departamento 4 e recebem salário acima de R$ 2500,00 reais ou trabalham no departamento 5 e recebem salário acima de R$ 3000,00 dólares.

DEP=4 AND SALARIO >2500) OR (DEP=5 AND SALARIO>3000) (EMPREGADO)

Comando em SQL:

Select *

from EMPREGADO

where (coddep=4 and salário > 25000) or (coddep=5 e salário > 3000)

1.2 PROJEÇÃO (PROJECT)

Seleciona certas colunas da tabela e descarta outras. Mostra apenas os atributos de uma relação.

EX.: Listar o primeiro, o último nome e o salário de empregado

UNOME,PNOME,SALÁRIO (EMPREGADO)

Obs.: se a lista de atributos incluir apenas atributos não-chaves, é possível que ocorram tuplas repetidas.

Pode-se trabalhar com relações indermediárias ou operações aninhadas.

PNOME,UNOME, SALÁRIO( DEP=5 (EMPREGADO))

ou

DEPT5EMP <- DEP=5 (EMPREGADO)

PNOME,UNOME, SALÁRIO (DEPT5EMP)

Comando em SQL:

Select PNOME, UNOME, SALARIO

From EMPREGADO

Where (dep=5)

Page 3: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

2. OPERAÇÕES DA ÁLGEBRA RELACIONAL A PARTIR DA TEORIA DE CONJUNTO

2.1 UNIÃO (R U S)

Inclui todas as tuplas que estão em R, ou em S ou em ambas, R e S.

Ex.: Todos os empregados que trabalham no departamento 5 ou que supervisionam diretamente um empregado que trabalha no departamento 5.

DEPT5 <- DEP=5 (EMPREGADO)

RESULT1 <- MATR(DEPT5)

RESULT2(MATRSUPER) <- MATRSUPER(DEPT5)

RESULT <- RESULT1 U RESULT2

Comando em SQL:

Select matr from EMPREGADO where (dep=5)

Union

Select matrsuper from EMPREGADO where (dep=5)

2.2 INTERSECÇÃO (R ∩ S) Inclui todas as tuplas que estão em ambas, R e S.

Ex.:

Comando em SQL:

Page 4: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

Select * from ALUNO

Intersect

Select * from PROFESSOR

2.3 DIFERENÇA (R - S)

Inclui todas as tuplas que estão em ambas, R e S.

Obs.: Compatibilidade da UNIÃO, INTERSECÇÃO E DIFERENÇA devem ter o mesmo tipo de tuplas, ou seja, o mesmo grau n e o dom(Ai) = dom(Bi). Isso significa que as duas relações tem o mesmo número de atributos e cada par correspondente de atributo tem o mesmo domínio.

Comando em SQL:

Select * from ALUNO

Except

Select * from PROFESSOR

2.4 PRODUTO CARTESIANO

Page 5: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

É uma operação binária de conjunto, mas as relações não têm de ser união compatível.

O resultado de R(A1, A2, ...,Nn) x S(B1, B2,...,Bm) é Q com grau n+m de atributos Q(A1, A2,...,An, B1, B2,...,Bm), nessa ordem.

Uma tupla para cada combinação de tupla: uma de R e uma de S.

Obs.: Essa operação por si só, em geral, não tem sentido.

Listar os nomes dos dependentes de cada emprega.

EMP_FEM <- SEXO=’F’ (EMPREGADO)

NOME_EMP <- PNOME,UNOME,MATR(EMP_FEM)

DEP_EMP <- NOME_EMP X DEPENDENTE

DEP_REAIS <- MATR=DMATR (DEP_EMP)

RESULT <- PNOME,UNOME,NOMEDEP(DEP_REAIS)

Obs.:Por ser bastante utilizado, uma nova operação foi criada para o produto seguido por seleção: JOIN (JUNÇÃO)

3. OPERAÇÕES RELACIONAIS BINÁRIAS

3.1 JOIN

Combina tuplas relacionadas.

Ex.: Recuperar o nome do gerente de cada departamento

DEP_GER <- DEPARTAMENTO MATRGER=MATR (EMPREGADO)

RESULT <- PNOME,UNOME,NOME(DEP_GER)

Obs.: MATRGER é a chave estrangeira e a restrição de integridade referencial “casa” as tuplas.

PRODUTO CARTESIANO JUNÇÃOTodas as combinações aparecem no resultado

Apenas as combinações de tuplas que satisfizerem a condição de junção aparecerão no resultado.

Obs.: As tuplas cujos atributos são null não aparecem no resultado.

Page 6: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

3.2 VARIAÇÕES DE JUNÇÃO: EQUIJUNÇÃO (EQUIJOIN) E JUNÇÃO NATURAL (NATURAL JOIN)

o EQUIJOIN Quando as condições de junções usam apenas comparações de

igualdade.o NATURAL JOIN

Valores como MATRGER e MATR são idênticos, um valor pode ser suprimido, assim a junção natural só utiliza um valor idêntico.

Os dois atributos devem ter o mesmo nome em ambas as relações

JUNÇÃO INTERNA – INNER JOIN

Casam tuplas que satisfazem a condição de junção. Em uma junção R S, apenas as tuplas de R que correspondem às tuplas de S

aparecem no resultado. As tuplas sem uma tupla correspondente são eliminadas do resultado. Tuplas com valores NULL também são eliminadas.

JUNÇÃO EXTERNA (OUTROS TIPOS DE JUNÇÃO)

Mantém todas tuplas em R ou todas em S ou todas em ambas as relações.

TIPOS DE JUNÇÃO

o LEFT OUTER JOIN – pode haver tuplas de uma relação R com mesmo atributo em S que não possuem valor comum, neste caso são apresentadas todas as tuplas de R e S com valores comuns e as tuplas de R que não possuem valor comum os valores dos atributos de S são apresentados como NULL.

o RIGHT OUTER JOIN – pode haver tuplas de uma relação S com mesmo atributo em R que não possuem valor comum, neste caso são apresentas todas as tuplas de S e R com valores comuns e as tuplas de S que não possuem valor comum os valores dos atributos de R são apresentados como NULL.

o FULL OUTER JOIN – as tuplas tanto das relações de R como de S que não possuem valor comum devem aparecer os valores NULL.

Page 7: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

Ex.: Relações de Cargo e Funcionário

Resultado de Inner Join entre Cargo e Funcionário

Funcionário F.CodCargo=C.CodCargo (Cargo)

Resultado de Left Outer Join entre Cargo e Funcionário

Funcionário F.CodCargo=C.CodCargo (Cargo)

(Mantém toda a tupla da primeira relação à esquerda)

Resultado de Right Outer Join entre Cargo e Funcionário

Funcionário F.CodCargo=C.CodCargo (Cargo) (Mantém toda a tupla da relação à direita)

Page 8: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

Resultado de Outer Full Join entre Cargo e Funcionário

Funcionário F.CodCargo=C.CodCargo (Cargo)

(Mantém toda as tuplas da relação à direita e à esquerda)

Page 9: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

Resumo das principais operações vistas:

xercício Proposto:

1) Considerando o seguinte esquema de BD de uma empresa de RH escreva as seguintes possíveis consultas em álgebra relacional, que o usuário pode realizar sobre esta BD:

Esquema de BD:

Departamento(coddep(PK), nome, matrger(FK))

Empregado(matr(PK),nome, idade, salário, rua, bairro, CEP, tipEmpr, coddep(FK), matrsuper(FK))

Dependente((numdep, matrempr(FK))(Pk), nome, sexo, idade)

Projeto(codproj(PK), local, coddep(FK))

Alocação((matr(FK), codproj(FK))(PK), numhoras)

a) Obtenha o salário do empregado “João”b) Obtenha o nome e salário dos empregados que trabalham no

departamento 5.

Page 10: rosefib.webnode.com.br · Web viewÁLGEBRA RELACIONAL ÁLGEBRA RELACIONAL: Conjunto básico de operações para o Modelo Relacional O resultado é uma relação OPERAÇÕES RELACIONAIS

c) Selecione a matrícula de todos os empregadosd) Obtenha o número de horas de todos os empregados do

departamento de informática, que estão alocados no projeto de nome “Reciclagem de lixo eletrônico”.

e) Selecione o nome e endereço de todos os empregados que trabalham no departamento de produção.

f) Selecione os nomes de todos os empregados que não tem supervisor.

g) Para cada empregado recupere seu nome e o nome de seu supervisor.

h) Para cada projeto em “Fortaleza” liste o código do projeto, o departamento que o controla e nome do gerente com endereço e salário.

i) Liste todos os nomes de projetos que envolvam o empregado “Silva” como trabalhador ou como gerente do departamento que controla o projeto.

j) Recupere o nome de cada empregado que tem um dependente com o mesmo nome e mesmo sexo.

k) Selecione os nomes dos empregados que não tem supervisor.

2) Para a seguinte relação abaixo:

Empregado(matr, nome, codcargo, nomecargo, codproj, datafim, horas)

a) existe dependência funcional parcial entre os atributos ? Se sim indique os atributos que causam esta dependência.

b) existe dependência transitiva entre os atributos ? Se sim indique os atributos que causam esta dependência.

c) analise se esta relação está normalizada e caso esteja indique até regra de normalização ela está normalizada.

d) aplique as regras de normalização quando possível para evitar problemas de redundância nos dados e apresente as novas relações criadas proveniente desta normalização.