• Nenhum resultado encontrado

Cap06

N/A
N/A
Protected

Academic year: 2021

Share "Cap06"

Copied!
63
0
0

Texto

(1)

Bancos de Dados

6. Álgebra Relacional e

(2)

Álgebra Relacional

• Além da definição da estrutura e das restrições do banco de dados, o modelo de dados deve incluir um conjunto de

operações para manipular os dados

• A álgebra relacional é o conjunto de operações previsto no modelo relacional

• Essas operações possibilitam a especificação de operações básicas de recuperação de dados

• Uma seqüência de operações forma uma expressão da álgebra relacional

(3)

Álgebra Relacional

• Operações de conjunto

– UNIÃO (UNION)

– INTERSEÇÃO (INTERSECTION)

– DIFERENÇA entre conjuntos (DIFFERENCE)

• Operações concebidas especificamente para BD relacionais

– SELECIONAR (SELECT) – PROJETAR (PROJECT) – JUNTAR (JOIN)

• Operações adicionais

– RENAME, produto cartesiano, DIVISÃO

– SUM, AVERAGE, MAXIMUM, MINIMUM, COUNT – Fechamento recursivo, outer join, outer union,

(4)

SELECT

• A operação SELECT é usada para selecionar um

subconjunto das tuplas de uma relação que satisfaça a uma condição de seleção

• A condição de seleção constitui um filtro, e é uma

expressão booleana especificada sobre os atributos da relação

• Ex.: selecionar empregado cujo departamento seja 4

σ

NUD=4(EMPREGADO)

• Ex.: selecionar empregado cujo salário seja inferior a 2000

(5)

SELECT

• Notação genérica

σ

<condição>(R)

– R é uma expressão da álgebra relacional, cujo resultado é uma relação; a expressão mais simples é o nome de uma relação – A relação resultante de

σ

possui os mesmos atributos de R – A condição pode ser constituída de cláusulas relacionadas por

operadores booleanos ou de comparação

(6)

SELECT

• SELECT é um operador unitário, ou seja, é aplicado a apenas uma relação

• A condição de seleção é aplicada a cada tupla

individualmente, e portanto as condições de seleção não podem envolver mais de uma tupla

• O grau da relação resultante é o mesmo de R

• O número de tuplas da relação resultante é menor que ou igual ao número de tuplas em R

• A fração das tuplas selecionadas é chamada de seletividade da condição

(7)

SELECT

• SELECT é comutativa:

σ

<cond1>(

σ

<cond2>(R)) =

σ

<cond2>(

σ

<cond1>(R))

• Uma cascata de seleções pode ser combinada usando “E”

(8)

PROJECT

• Enquanto SELECT filtra algumas linhas da tabela, PROJECT seleciona algumas colunas

• É usada quando se tem interesse em apenas alguns dos atributos de uma relação, daí o nome: “projetar” a relação ao longo desses atributos

• Ex.:

π

NOME, SOBRENOME, SALÁRIO(EMPREGADO) • Forma genérica:

(9)

PROJECT

• Caso a lista de atributos inclua somente atributos que não são chave de R, é possível que ocorram tuplas duplicadas, o que faria com que o resultado não fosse uma relação

válida

– PROJECT elimina tuplas duplicadas do resultado

– Se a lista de atributos for uma superchave de R, então o número de tuplas resultante é igual ao número de tuplas de R

• O grau da relação resultante é sempre menor que ou igual ao grau de R

• O número de tuplas da relação resultante é sempre menor que ou igual ao número de tuplas em R

(10)

PROJECT

• Propriedades:

π<lista 1><lista 2) (R)) = π<lista 1>(R)

– (apenas se lista 2 contiver os atributos de lista 1, senão a expressão é inválida)

(11)
(12)

RENAME e seqüências de

operações

• As relações exibidas na fig. 7.8 não têm nome

• Pode ser interessante atribuir um nome a uma relação

resultante de uma expressão algébrica, para uso futuro ou como resultado intermediário de uma operação mais

complexa

• Ex.: listar nome e salário dos empregados do depto. 5

π

NOME, SOBRENOME, SALARIO(

σ

NUD=5(EMPREGADO))

• Equivale a:

– DEP5_EMP <-

σ

NUD=5(EMPREGADO))

(13)

RENAME e seqüências de

operações

• É possível renomear atributos:

TEMP <-

σ

NUD=5(EMPREGADO))

R(N, SN, SAL) <-

π

NOME, SOBRENOME, SALARIO(DEP5_EMP)

• Notação

ρ

S(B1, B2, ..., Bn)(R) : renomeia atributos e a relação

ρ

S(R) : renomeia apenas a relação

ρ

(B1, B2, ..., Bn)(R) : renomeia apenas os atributos

(14)
(15)

Operações da Teoria de

Conjuntos

• A álgebra relacional inclui operações típicas de conjuntos, como UNIÃO, INTERSEÇÃO e DIFERENÇA entre

conjuntos

• Servem para combinar resultados

– Ex.: empregados que trabalham no depto 5 OU que supervisionam diretamente um empregado do depto 5

DEP5_EMP <- σNUD=5(EMPREGADO))

RESULTADO1 <- πNSS(DEP5_EMP)

RESULTADO2(NSS) <- πNSSSUPER(DEP5_EMP)

RESULTADO <- RESULTADO1 RESULTADO2 ∪

(16)

Operações da Teoria de

Conjuntos

• As operações UNIÃO, INTERSEÇÃO e DIFERENÇA são binárias, ou seja, cada uma é aplicada a dois conjuntos

• Quando adaptadas a BD relacionais, definiu-se que as duas relações devem possuir o mesmo tipo de tuplas:

compatibilidade para união

• Duas relações R(A1, A2, ..., An) e S(B1, B2, ..., Bn) são consideradas compatíveis para união quando

– possuem o mesmo grau (n)

(17)

Operações da Teoria de

Conjuntos

• Definições (aplicam-se a relações compatíveis para união):

– UNIÃO: O resultado, , é uma relação que inclui todas as tuplas que estão em R ou em S ou em ambos. Tuplas duplicadas são eliminadas.

– Interseção: o resultado, , é uma relação que inclui todas as tuplas que estão tanto em R quanto em S

– Diferença: o resultado, R-S, é uma relação que inclui todas as tuplas que estão em R, porém não estão em S.

• R – S <> S – R

• Adota-se a convenção de que a relação resultante possui os mesmos nomes de atributos que a primeira relação (R)

S R

S R

(18)
(19)

Operações da Teoria de

Conjuntos

• Propriedades R S S R Porém T S R T S R T S R T S R idade Associativ R S S R R S S R dade Comutativi − ≠ − ∩ ∩ = ∩ ∩ ∪ ∪ = ∪ ∪ ∩ = ∩ ∪ = ∪ ) ( ) ( ) ( ) ( : :

(20)
(21)

Produto Cartesiano

• Também conhecida como “produto cruzado” (cross product) ou “junção cruzada” (cross join), serve para combinar exaustivamente tuplas de duas relações

) , , , , , , , ( ) , , , ( ) , , , (A1 A2 An S B1 B2 Bm Q A1 A2 An B1 B2 Bm R K × K → K K

(22)

Produto Cartesiano

• A relação resultante Q tem n + m atributos, ou seja, a soma do grau das duas relações R e S originais

• Se R possui nR tuplas, e S possui nS tuplas, então Q terá nR * nS tuplas

• Aplicada individualmente, a operação de produto

cartesiano faz pouco sentido; deve ser seguida por uma seleção

• Ex.: selecionar empregados do sexo feminino e seus dependentes ) _ ( ) _ ( _ _ _ ) _ ( _ ) ( _ _ , , , , " " ATUAIS S DEPENDENTE RESULTADO EMP S DEPENDENTE ATUAIS S DEPENDENTE DEPENDENTE EMP NOMES EMP S DEPENDENTE MULHERES EMP EMP NOMES EMPREGADO MULHERES EMP dependente nome sobrenome nome NSSE NSS nss sobrenome nome F sexo π σ π σ ← ← × ← ← ← = =

(23)

Produto Cartesiano

• O que faz sentido no produto cartesiano é a seleção de

combinações de tuplas apenas no caso em que existe algum relacionamento, como no exemplo

• Como esse tipo de operação é realizado com muita freqüência, o modelo relacional inclui uma operação

especial, chamada JUNÇÃO, para fazer todas as operações como as do exemplo em um único passo

(24)
(25)

JOIN

• Utilizada para combinar tuplas relacionadas de duas relações em uma única tupla

• É a operação que viabiliza os relacionamentos entre relações

• Nesse caso, JOIN substitui um produto cartesiano seguido de uma seleção

• Ex:

GER_DEP <- DEPARTAMENTO NSSGER=NSS EMPREGADO

(26)
(27)

JOIN

• Na operação anterior, NSSGER é uma chave estrangeira de DEPARTAMENTO em EMPREGADO

• A operação é viabilizada pela restrição de integridade referencial, que garante que existam tuplas relacionadas • O mesmo resultado pode ser obtido usando:

• Ou: ) _ ( _ _ _ EMP S DEPENDENTE ATUAIS S DEPENDENTE DEPENDENTE EMP NOMES EMP S DEPENDENTE NSSE NSS= ← × ← σ

(28)

JOIN

• Notação completa: a junção de duas relações R(A1, A2, ..., An) e S(B1, B2, ..., Bm) é denotada por

• O resultado da junção é uma relação Q(A1, A2, ..., An, B1, B2, ..., Bm), com n+m atributos

• Q possui uma tupla para cada combinação de tuplas de R e de S que satisfaça à condição de junção

(29)

JOIN

• A condição geral de junção é da forma

– <condição> E <condição> E ... E <condição>

– Cada condição individual é da forma Ai θ Bj, sendo θ um dos operadores de comparação (<, >, =, <>, >=, <=)

– Ai é um atributo de R, Bj é um atributo de S, e o domínio de ambos é o mesmo

– Tuplas cujos atributos de junção sejam nulos não aparecem no resultado

– JUNÇÃO TETA

• Quando a operação é apenas a igualdade, a operação é denominada EQUIJUNÇÃO (EQUIJOIN)

(30)

JUNÇÃO NATURAL

• No resultado da equijunção, um par de atributos com

valores idênticos faz parte do resultado, o que é supérfluo • A junção natural é definida como uma equijunção seguida

da remoção desses atributos, e é denotada com “*”

• Na junção natural exige-se que os nomes dos dois atributos sejam idênticos Æ atributo de junção

• Ex: renomear o atributo NUMERODEP para NUMD e realizar a junção natural

(31)
(32)

Álgebra Relacional: operações

• Foi demonstrado matematicamente que o conjunto básico de operações da álgebra relacional (σ, π,U, -, X) é completo

– Qualquer uma das outras operações da álgebra pode ser definida em função dessas operações

– Interseção pode ser definido em função de união e diferença

– Junção pode ser definida em função de produto cartesiano e seleção – Junção natural pode ser definida em função de produto cartesiano,

renomear, selecionar e projetar

• No entanto, não é conveniente especificar operações complexas sempre que for necessário usar algumas dessas operações

(33)

DIVISION

• Útil para alguns tipos especiais de consulta

– Ex.: recuperar os nomes dos empregados que trabalham nos mesmos os projetos nos quais “John Smith” trabalha

SMITH Å

σ

NOME=’JOHN’ e SOBRENOME=’SMITH’(EMPREGADO)

SMITH_NUMPS Å

π

NUMP(TRABALHA_EM NSSE=NSSSMITH)

NSS_NUMPS Å

π

NSSE,NUMP(TRABALHA_EM)

NSSS(NSS) Å NSS_NUMPS

÷

SMITH_NUMPS

(34)

DIVISION

• A definição formal de DIVISION é a seguinte:

– R(Z) ÷ S(X), onde X está contido em Z e ambos são conjuntos de atributos

– Seja Y = Z – X (ou seja, Z é a união de X e Y, e Y é o conjunto de atributos de R que não estão em S)

– O resultado da divisão é uma relação T(Y) que inclui cada tupla t para a qual tR[Y] = t e tR[X] = tS para todas as tuplas tS em S.

– Para figurar no resultado, os valores em t devem aparecer em R em combinação com todas as tuplas de S

(35)
(36)

Operações Relacionais

Adicionais

• Agregação e agrupamento • Fechamento recursivo

(37)

Agregação e Agrupamento

• Operações como SUM, AVERAGE, MAXIMUM, MINIMUM, COUNT aplicadas a grupos de tuplas ou a toda a relação

• Notação:

<atributos de agrupamento>

F

<lista de funções>(R)

• Exemplo:

ρR(NUD,NUM_EMPR,MÉDIA_SAL)(NUD F COUNT NSS, AVERAGE SALARIO(EMPREGADO))

• Caso nenhum atributo de agrupamento seja especificado, o resultado é uma relação com uma única tupla

– Mesmo que a tupla resultante tenha um só atributo, ainda assim o resultado é uma relação

(38)
(39)

Operações de Fechamento

Recursivo

• Aplicada a auto-relacionamentos

• Exemplo: selecionar todos os empregados supervisionados por um empregado dado, em todos os níveis (ou seja,

retornar os supervisionados diretos, mais os supervisionados destes, e assim por diante)

• Em geral não é possível especificar esse tipo de consulta com um número indeterminado de níveis sem recorrer a algum mecanismo de looping

(40)
(41)

Outer Join e Outer Union

• Extensões de Join e de Union

• Na junção natural R * S apenas figuram tuplas que se

combinam, portanto as demais são eliminadas do resultado, junto com tuplas com nulo nos atributos de junção

• Outer Joins permitem manter todas as tuplas de R (ou de S), mesmo que não possuam correspondente na outra relação

(42)

Outer Join

• Exemplo: listar todos os empregados e os departamentos que gerenciam, caso gerenciem algum departamento

– Usa LEFT OUTER JOIN

TEMP Å EMPREGADO NSS=NSSGERDEPARTAMENTO)

(43)
(44)

Outer Join: outras formas

• LEFT OUTER JOIN • RIGHT OUTER JOIN • FULL OUTER JOIN

(45)

Outer Union

• Realiza a união entre duas relações mesmo que elas não sejam totalmente compatíveis para união

– É esperado que a lista de atributos compatíveis para união inclua uma chave para ambas as relações

– Tuplas com a mesma chave são representadas apenas uma vez, com valores para todos os atributos

– Atributos não compatíveis para união são mantidos no resultado, e tuplas que não possuem valores para esses atributos recebem valor nulo

• Ex: ALUNO(Nome, CPF, Departamento, Nota) e PROFESSOR (Nome, CPF, Departamento, Disciplina) retorna R(Nome, CPF, Departamento, Nota, Disciplina)

– Tuplas de alunos terão valor nulo em DISCIPLINA e tuplas de professores terão valor nulo em NOTA

(46)

Exemplos de Consultas

• Vide seção 6.5 do livro texto

• Essas consultas são repetidas no cap. 8, sob a forma de expressões SQL

(47)

Cálculo Relacional

• O cálculo relacional (também chamado de cálculo

relacional de tuplas) é uma linguagem formal de consultas voltada ao modelo relacional

• Enquanto a álgebra relacional é uma linguagem procedural, o cálculo relacional é uma linguagem declarativa (não-procedural)

• A ordem de comandos na álgebra relacional influencia a estratégia para a avaliação da consulta

• No cálculo relacional, a maneira que uma expressão é composta não indica como deve ser avaliada

(48)

Cálculo Relacional

• Foi demonstrado que a álgebra relacional e o cálculo relacional têm exatamente o mesmo poder de expressão • Outras linguagens de consulta são definidas por

comparação ao cálculo relacional

– Uma linguagem de consulta L é dita relacionalmente completa se for possível expressar em L qualquer consulta que possa ser

formulada em cálculo relacional

• A maioria das linguagens de consulta é relacionalmente completa, e tem poder de expressão maior do que o do cálculo relacional, devido ao acréscimo de operações

(49)

Variáveis de Tupla

• Uma variável de tupla cobre toda uma relação, ou seja, a variável pode assumir, como valor, qualquer tupla da relação

• As expressões do CR são definidas como conjuntos

– {t | COND(t)} Æ conjunto das tuplas t que atendem à condição COND

– {t | EMPREGADO(t) AND t.salario > 1000} Æ

conjunto dos dados (tupla completa) de empregado cujo salário seja maior que 1000.

• EMPREGADO(t) define que a relação de extensão da tupla é a relação empregado

– {t.nome, t.dn | EMPREGADO(t) AND t.salario > 1000} Æ retorna apenas o nome e a data de nascimento, dentre os atributos de empregado

(50)

Variáveis de Tupla

• Uma expressão do CR contém:

– Para cada variável de tupla t, a relação de extensão para t, na forma R(t)

– Uma condição para selecionar tuplas particulares, que será

avaliada para cada combinação possível de relações de extensão das variáveis de tupla envolvidas

– Um conjunto de atributos que serão recuperados para cada combinação de tuplas que tenha sido selecionada

(51)

Expressões e Fórmulas

• Uma expressão do CR é da forma

{t1.Aj, t2.Ak, ..., tnAm | COND(t1, t2, ..., tn, tn+1,... tn+m)}

– t1, t2, ..., tn, tn+1,... tn+m são variáveis de tupla

– Cada Ai é um atributo da relação sobre a qual ti se estende – COND é uma fórmula (ou fórmula bem formada, well-formed

(52)

Expressões e Fórmulas

A fórmula é formada por átomos do cálculo de predicados, que podem ser:

– Um átomo na forma R(t), que especifica a relação de extensão – Um átomo na forma ti.A op tj.B, onde op é um operador de

comparação (=, <>, <, >, >=, <=), ti e tj são variáveis de tupla, A é um atributo da relação pela qual ti se estende e B é um atributo da relação pela qual tj se estende

– Um átomo na forma ti.A op c ou c op tj.B, onde c é uma constante

Cada átomo é avaliado para um valor booleano, chamado valor

verdade do átomo

(53)

Expressões e Fórmulas

• A fórmula pode ser definida recursivamente:

1. Cada átomo é uma fórmula

2. Se F1 e F2 são fórmulas, então (F1 AND F2), (F1 OR F2), NOT(F1) e NOT(F2) também são fórmulas

(54)

Quantificadores

• Dois símbolos adicionais podem aparecer em fórmulas

– Quantificador universal ( ) – Quantificador existencial ( )

Uma variável de tupla é livre ou limitada em uma fórmula de acordo com as seguintes regras:

– A ocorrência de uma variável de tupla em uma fórmula F que é um átomo é livre em F

– A ocorrência de uma variável de tupla t é livre ou limitada em uma

fórmula composta por operadores AND, OR, NOT (como F1 AND F2) se ela for livre ou limitada em F1 ou em F2

• Observe que uma variável de tupla pode ser livre em F1 e limitada em F2, ou vice-versa

– Todas as ocorrências livres de uma variável de tupla t em F são limitadas em uma fórmula F’ da forma

ou seja, a variável de tupla fica limitada pelo quantificador especificado em F’ ∀ ∃ ) )( ( ' __ __ ) )( ( ' t F ou F t F F = ∃ = ∀

(55)

Quantificadores

• Exemplo

• A variável de tupla d está livre em F1 e F2, mas limitada pelo quantificador em F3 ) ' 333445555 ' . )( ( : 3 ) . . )( ( : 2 ' ' . : 1 = ∀ = ∃ = MGRSSN d d F DNO t DNUMBER d t F RESEARCH DNAME d F

(56)

Expressões e Fórmulas,

complemento

• A fórmula pode ser definida recursivamente:

1. Cada átomo é uma fórmula

2. Se F1 e F2 são fórmulas, então (F1 AND F2), (F1 OR F2), NOT(F1) e NOT(F2) também são fórmulas

3. Se F é uma fórmula, então também é, e é verdadeira se F puder ser avaliada como verdadeira para alguma (pelo menos uma) tupla designada para ocorrências livres de t em F

4. Se F é uma fórmula, então também é, e é verdadeira se F puder ser avaliada como verdadeira para todas as tuplas (do universo) designadas para ocorrências livres de t em F

) )( (∃t F ) )( (∀t F

(57)

Exemplos

• Recuperar os nomes e endereços de todos os empregados que trabalham para o departamento ‘Pesquisa’

• Mais exemplos: seções 6.6.4, 6.6.5, 6.6.6

)} . . __ __ ' ' . __ __ ) ( )( ( __ __ ) ( | . , . { NUMDEP t NUMERODEP d AND Pesquisa NOMEDEP d AND d DEPTO d AND t EMPREGADO ENDERECO t NOME t = = ∃

(58)

Expressões Seguras

• Uma expressão segura do cálculo relacional é aquela que, garantidamente, produz um número finito de tuplas como resultado.

• A expressão {t | NOT (EMPREGADO(t))} é insegura,

pois retorna todas as tuplas do universo que não pertencem à relação empregado.

(59)

Cálculo Relacional de Domínio

• O cálculo relacional de tuplas é a base para o SQL, e foi desenvolvido em um centro de pesquisa da IBM

• O cálculo relacional de domínio foi desenvolvido ao

mesmo tempo em outro centro de pesquisa da IBM, e é a base para a linguagem QBE (Query By Example)

(60)
(61)
(62)
(63)

Referências

• Capítulo 6 de Elmasri & Navathe

• Codd, E. A Relational Model for Large Shared Data Banks. Communications of the ACM 13:6, June 1970.

Referências

Documentos relacionados

Caso exista, as tuplas s˜ao combinadas para a formac¸˜ao de uma ´unica tupla com os valores dos atributos das duas relac¸˜oes, caso contr´ario ´e criada uma tupla com os valores

Os funcionários são cadastrados por CPF, nome, endereço, fone, cargo e salário. Dentre os funcionários se destacam os engenheiros que possuem dois atributos adicionais: o CREA e

Ó Deus, neste momento em que a Vossa obra de criação continua a avançar sempre tão firmemente em Vossa grande harmonia, permiti-nos realizar o Culto Mensal

19 Na remensuração subsequente de um grupo de alienação, os valores contábeis de quaisquer ativos e passivos que não estiverem dentro do alcance dos requisitos de mensuração

Use o lema do bombeamento para mostrar que, se uma linguagem L cont´em uma palavra de comprimento maior ou igual a n e ´e aceita por um autˆomato finito determin´ıstico com n

Todos os vírus possuem um capsídeo proteico. Essas proteínas são importantes para proteção e para identificação da célula-alvo do vírus. No interior do

– Tuplas de uma mesma relação não podem ter valores iguais para todos os seus atributos --&gt; Chave Primária &lt;&gt;.. • Restrições de Integridade de Entidade – Nenhuma

Há várias maneiras de não gastar água sem necessidade, por exemplo: pode-se usar a água da máquina de lavar para lavar o quintal e evitar um desperdício.. Resolva