Álgebra Relacional e Cálculo Relacional · Cálculo Relacional de Domínio I...

13
Álgebra Relacional e Cálculo Relacional Luiz Henrique de Campos Merschmann Departamento de Computação Universidade Federal de Ouro Preto [email protected] www.decom.ufop.br/luiz Roteiro Posicionamento Introdução Operações Relacionais Unárias Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos Outras Operações Relacionais BCC321 - Banco de Dados I Ementa 1. Conceitos básicos em sistemas de banco de dados. 2. Conceitos e arquitetura de sistemas de banco de dados. 3. Modelagem conceitual de dados. 4. Modelo Relacional: conceitos básicos e restrições de integridade. 5. Linguagens: álgebra e cálculo relacional. 6. A linguagem SQL e o uso de APIs. 7. Projeto de banco de dados. 8. Normalização de banco de dados. 9. Noções de processamento de transações, concorrência e recuperação de falhas. 10. Aspectos de implementação de banco de dados. Introdução I Modelo de dados: conceitos para a definição das restrições e estrutura do banco de dados + conjunto de operações para manipular o banco de dados. I Álgebra relacional e cálculo relacional: duas linguagens de consulta formais do modelo relacional. I Essas linguagens de consulta são concisas e formais, sem o “açucar sintático” das linguagens comerciais. I Entender álgebra e cálculo relacional é fundamental para o entendimento de SQL e processamento de consultas.

Transcript of Álgebra Relacional e Cálculo Relacional · Cálculo Relacional de Domínio I...

Álgebra Relacional e Cálculo Relacional

Luiz Henrique de Campos MerschmannDepartamento de Computação

Universidade Federal de Ouro Preto

[email protected]/luiz

Roteiro

Posicionamento

Introdução

Operações Relacionais Unárias

Operações da Álgebra Relacional a Partir da Teoria dosConjuntos

Outras Operações Relacionais

BCC321 - Banco de Dados I

Ementa

1. Conceitos básicos em sistemas de banco de dados.2. Conceitos e arquitetura de sistemas de banco de dados.3. Modelagem conceitual de dados.4. Modelo Relacional: conceitos básicos e restrições de

integridade.5. Linguagens: álgebra e cálculo relacional.6. A linguagem SQL e o uso de APIs.7. Projeto de banco de dados.8. Normalização de banco de dados.9. Noções de processamento de transações, concorrência e

recuperação de falhas.10. Aspectos de implementação de banco de dados.

Introdução

I Modelo de dados: conceitos para a definição das restrições eestrutura do banco de dados + conjunto de operações paramanipular o banco de dados.

I Álgebra relacional e cálculo relacional: duas linguagens deconsulta formais do modelo relacional.

I Essas linguagens de consulta são concisas e formais, sem o“açucar sintático” das linguagens comerciais.

I Entender álgebra e cálculo relacional é fundamental para oentendimento de SQL e processamento de consultas.

Introdução

I Conjunto de operações básicas para o modelo relacional:álgebra relacional.

I Essas operações permitem ao usuário especificar solicitaçõesde recuperação, cujo resultado será uma nova relação.

I Uma sequência de operações de álgebra forma umaexpressão de álgebra relacional.

Importância da Álgebra Relacional

I Fornece um fundamento formal para operações do modelorelacional.

I É usada como base para implementar e otimizar asconsultas em SGBDs relacionais.

I Alguns de seus conceitos são incorporados na linguagem deconsulta padrão SQL.

Álgebra Relacional x Cálculo Relacional

Álgebra relacional

I Linguagem procedural.I Predominantemente operacional, útil para representar

planos de execução.

Cálculo relacionalI Linguagem não procedural.I O usuário descreve a informação desejada sem fornecer um

procedimento específico para a obtenção dessas informações(notação declarativa).

I A SQL é baseada em cálculo relacional, mas tambémincorpora algumas operações de álgebra relacional.

Operações da Álgebra Relacional

Conjunto de operações da teoria de conjunto matemática:

I União (Union).I Interseção (Intersection).I Diferença de Conjunto (Set Difference).I Produto Cartesiano (Cross Product).

Operações desenvolvidas especificamente para os bancos dedados relacionais:

I Seleção (Select).I Projeção (Project).I Junção (Join).I . . .

Base de Dados dos Exemplos Operações Relacionais Unárias: Seleção

I Seleção: usada para selecionar um subconjunto de tuplas deuma relação que satisfaça uma condição de seleção.

I A operação de seleção seleciona algumas linhas da tabela.I Essa operação é indicada por:σ<condicao de selecao>(R)

I < condicao de selecao > é uma expressão booleana.I R é uma expressão da álgebra relacional cujo resultado é

uma relação (a mais simples delas seria exatamente o nomede uma relação).

I Exemplos:σDnr=4(FUNCIONARIO)

σ(Dnr=4 AND Salario>25000) OR (Dnr=5 AND Salario>30000)(FUNCIONARIO)

Operação de Seleção

σ(Dnr=4 AND Salario>25000) OR (Dnr=5 AND Salario>30000)(FUNCIONARIO)

Operação de Seleção

I Operadores de comparação: =, <,≤, >,≥, 6=.I Condições booleanas: AND, OR, NOT.I Operação de seleção é aplicada a cada tupla

individualmente.I As condições de seleção não podem envolver mais que uma

tupla.I A operação de seleção é comutativa.

I σ<cond1>(σ<cond2>(R)) = σ<cond2>(σ<cond1>(R))

I |σc(R)| ≤ |R|.I A fração de tuplas selecionadas por uma condição de seleçãoc é conhecida como seletividade da condição.

Operações Relacionais Unárias: Projeção

I Enquanto a seleção seleciona algumas linhas da tabela, aprojeção seleciona certas colunas.

I Essa operação é indicada por:π<lista de atributos>(R).

I < lista de atributos > é a lista dos atributos desejados darelação R.

I R é uma expressão da álgebra relacional cujo resultado éuma relação (a mais simples delas seria exatamente o nomede uma relação).

I Exemplo:πUnome,Pnome,Salario(FUNCIONARIO).

I O resultado da projeção é um conjunto de tuplas, portanto,essa operação remove quaisquer tuplas repetidas.

Operação de Projeção

I a)πUnome,Pnome,Salario(FUNCIONARIO).I b)πSexo,Salario(FUNCIONARIO).

a) b)

Sequencia de Operações e a Operação Renomear(Rename)

I Podemos querer aplicar uma sequência de operações deálgebra.

I Para isso, temos duas opções:I Escrever as operações como uma única expressão de álgebra

relacional (aninhamento das operações).I Aplicar uma operação por vez criando relações de

resultados intermediários. Nesse caso, devemos dar nomesàs relações que envolvem os resultados intermediários.

ExemploRecuperar o primeiro nome, último nome e o salário de todos osfuncionários que trabalham no departamento no 5.

I a)πPnome,Unome,Salario(σDnr=5(FUNCIONARIO))I b)TEMP ← σDnr=5(FUNCIONARIO)R(Primeiro_nome,Ultimo_nome, Salario)←πPnome,Unome,Salario(TEMP )

Operação Renomear (Rename)

I No exemplo anterior vimos a operação de renomearatributos na relação de resultado R.

I Além de renomear os nomes dos atributos, podemostambém renomear os nomes das relações.

I Exemplos:I Renomear somente os atributos:ρ(B1,B2,...,Bn)(R)

I Renomear apenas a relação:ρS(R)

I Renomear a relação e seus atributos:ρS(B1,B2,...,Bn)(R)

Operações União, Interseção e Subtração

I São operações binárias, ou seja, aplicadas a dois conjuntosde tuplas.

I As duas relações nas quais essas operações forem aplicadasdevem ter o mesmo tipo de tupla (compatibilidade de uniãoou compatibilidade de tipo).

I R(A1, A2, . . . , An) e S(B1, B2, . . . , Bn) são compatíveis naunião se tiverem o mesmo grau n e se dom(Ai) = dom(Bi)para 1 ≤ i ≤ n.

Operações União, Interseção e Subtração

I Podemos definir as três operações em duas relações R e Scompatíveis na união, como:

I União (R ∪ S): é uma relação que inclui todas as tuplas queestão em R, ou em S, ou em ambas, R e S. As tuplasrepetidas são eliminadas.

I Interseção (R ∩ S): é uma relação que inclui todas as tuplasque estão em ambas, R e S.

I Subtração ou diferença de conjunto (R− S): é uma relaçãoque inclui todas as tuplas que estão em R, mas não estãoem S.

I Adotaremos a convenção de que a relação resultante tem osmesmos nomes de atributos da primeira relação R.

Operações União, Interseção e Subtração

I Tanto a UNIÃO quanto a INTERSEÇÃO são:I Operações comutativas, ou seja, R ∪ S = S ∪R eR ∩ S = S ∩R.

I Operações associativas (aplicáveis a qualquer número derelações), ou seja, R ∪ (S ∪ T ) = (R ∪ S) ∪ T e(R ∩ S) ∩ T = R ∩ (S ∩ T ).

I A operação de SUBTRAÇÃO não é comutativa, assim, emgeral, R− S 6= S −R

Operações União, Interseção e Subtração

(a) Duas relações compatíveis na união. (b) ALUNO ∪ PROFESSOR. (c)ALUNO ∩ PROFESSOR. (d) ALUNO − PROFESSOR. (e)PROFESSOR−ALUNO.

Operação Produto Cartesiano

I Também conhecida como Cross Product (ProdutoCruzado) ou Cross Join (Junção Cruzada).

I Também é uma operação binária de conjunto, mas asrelações nas quais ela é aplicada não têm que sercompatíveis na união.

I Operação usada para combinar as tuplas de duas relaçõesde forma combinatória.

I O resultado do produto cartesianoR(A1, A2, . . . , An)× S(B1, B2, . . . , Bm) é uma relaçãoQ(A1, A2, . . . , An, B1, B2, . . . , Bm).

I A relação Q tem uma tupla para cada combinação de tuplas(uma de R e uma de S).

I Ou seja, se R tiver nR tuplas e S tiver nS tuplas, entãoR× S terá nR × nS tuplas.

Operação Produto CartesianoI Essa operação por si só, em geral, não tem sentido.I Ela será útil quando for seguida por uma seleção que

combina valores de determinados atributos vindos dasrelações componentes.

I Sequência produto cartesiano seguido por seleção ⇒operação junção (join).

Exemplo: queremos montar uma lista com os nomes dosdependentes de cada funcionária.

I FUNC_MULHERES ← σSexo=′F ′(FUNCIONARIO)

I FUNCNOMES ← πPnome,Unome,Cpf (FUNC_MULHERES)

I FUNC_DEPENDENTES ←FUNCNOMES ×DEPENDENTE

I DEPENDENTE_PARTIC ←σCpf=Fcpf (FUNC_DEPENDENTES)

I RESULTADO ←πPnome,Unome,Nome_dependente(DEPENDENTE_PARTIC)

Exemplo da Operação Produto Cartesiano

A Operação Junção

I É usada para combinar as tuplas relacionadas em duasrelações, ou seja, nos permite processar os relacionamentosentre as relações.

I Junção pode ser definida por um produto cartesianoseguido por uma operação de seleção.

I Por exemplo:FUNC_DEPENDENTES ← FUNCNOMES ×DEPENDENTE

DEPENDENTE_PARTIC ← σCpf=Fcpf (FUNC_DEPENDENTES)

Essas duas operações podem ser substituídas por umaúnica operação Junção, como segue:DEPENDENTE_PARTIC ← FUNCNOMES onCpf=Fcpf DEPENDENTE

A Operação Junção

I A forma geral de uma operação de Junção em duasrelações R(A1, A2, . . . , An) e S(B1, B2, . . . , Bm) é:R on<condicao da juncao> S

I Cada combinação de tupla para a qual a condição dejunção for avaliada como verdadeira será incluída narelação resultante.

I A condição de junção é geralmente da forma< cond1 > AND < cond2 > AND . . . AND < condn >onde < condi > é uma expressão A θ B, sendo A umatributo de R, B um atributo de S e θ um dos operadores{=, <,≤, >,≥, 6=}.

I As tuplas cujos atributos de junção são null não aparecemno resultado.

Exemplo da Operação Junção

DEP_GER← DEPARTAMENTO onCpf_gerente=Cpf FUNCIONARIO

As Variações da Operação Junção

I Uma operação de junção que envolva apenas condições deigualdade (o único operador de comparação é o =) échamada Equijunção.

I Uma Junção Natural é uma Equijunção na qual osegundo atributo (supérfluo) de cada condição de igualdadeé eliminado da relação resultante.

I A definição-padrão de Junção Natural exige que os doisatributos de junção (ou cada par dos atributos de junção)tenham o mesmo nome em ambas as relações.

Exemplo de Junção Naturala) Nesse exemplo, primeiro renomearemos o atributo Dnumero deDEPARTAMENTO para Dnum (para ele ter o mesmo nome do atributoDnum em PROJETO) e depois aplicaremos a Junção Natural.

DEPT ← ρ(Dnome,Dnum,Cpf_gerente,Data_inicio_gerente)(DEPARTAMENTO)

PROJETO_DEP ← PROJETO ∗DEPT

b) LOCAL_DEP ← DEPARTAMENTO ∗ LOCALIZACAO_DEP

Conjunto Completo de Operações de ÁlgebraRelacional

I O conjunto de operações {σ, π, ρ,∪,−,×} é completo.I Ou seja, quaisquer outras operações originais da álgebra

podem ser expressas como uma sequência de operaçõesdesse conjunto.

I Exemplo: A interseção pode ser expressa usando-se asoperações união e subtração:

R ∩ S ≡ (R ∪ S)− ((R− S) ∪ (S −R))I Outro exemplo: R on<condicao> S ≡ σ<condicao>(R× S)I Portanto, algumas operações não são estritamente

necessárias para o poder expressivo da álgebra relacional,mas são convenientes.

A Operação Divisão

I É útil em situações como: recuperar os nomes dosfuncionários que trabalham em todos os projetos em que“João Silva” trabalha.

I Essa consulta pode ser realizada utilizando-se a operação dedivisão (÷) da seguinte forma:

SILV A← σPnome=′Joao′ AND Unome=′Silva′(FUNCIONARIO)

SILV A_PNRS ← πPnr(TRABALHA_EM onFcpf=Cpf SILV A)

CPF_PNRS ← πFcpf,Pnr(TRABALHA_EM)

CPFS(Cpf)← CPF_PNRS ÷ SILV A_PNRS

RESULTADO ← πPnome,Unome(CPFS ∗ FUNCIONARIO)

Exemplos da Operação Divisãoa) Dividindo CPF_PNRS por SILV A_PNRS.

Exemplos da Operação Divisãob) T ← R÷ S.

Outras Operações Relacionais

I Alguns requisitos comuns de um banco de dados nãopodem ser executados com as operações de álgebrarelacional originais (apresentadas até o momento).

I Exemplos: Soma, Média, Máximo, Mínimo.I Operações adicionais são usadas para expressar esses

requisitos.

Funções de Agregação e Agrupamento

I Sintaxe de uma operação para função de agregação:

<atributos de agrupamento>=<lista de funcao>(R)

I < atributos de agrupamento > é uma lista de atributos darelação R.

I < lista de funcoes > é uma lista de pares (< funcao >< atributo >).

I < funcao > é uma das funções permitidas(SOMA,MEDIA,MAXIMO,MINIMO,CONTA).

I A relação resultante tem os atributos de agrupamento +um atributo para cada elemento na lista de funções.

Exemplo da Operação Função Agregada

a) ρR(Dnr,Nr_de_funcionarios,Media_sal)

(Dnr=CONTACpf ,MEDIASalario(FUNCIONARIO))

b) Dnr=CONTACpf ,MEDIASalario(FUNCIONARIO)

c) =CONTACpf ,MEDIASalario(FUNCIONARIO)

Operação de Fechamento Recursivo

I Operação aplicada a um relacionamento recursivo entre astuplas de mesmo tipo.

I Exemplo: A partir do relacionamento entre funcionário esupervisor, recuperar todos os supervisionados de umfuncionário f em todos os níveis.

I Apesar de ser possível recuperar todos os funcionáriossupervisionados por um funcionário f em um nívelespecífico, em geral, não é possível especificar uma consultado tipo “recuperar os supervisionados em todos os níveis”sem utilizar um mecanismo de laço (loop).

Exemplo de Operação de Fechamento Recursivo

Recuperar os Cpfs de todos os funcionários diretamentesupervisionados por ’Jorge Brito’.CPF_BRITO ← πCpf (σPnome=′Jorge′ AND Unome=′Brito′ (FUNCIONARIO))

SUPERV ISAO(Cpf1, Cpf2)← πCpf,Cpf_supervisor(FUNCIONARIO)

RESULTADO1(Cpf)← πCpf1(SUPERV ISAO onCpf2=Cpf CPF_BRITO)

Para recuperar todos os funcionários supervisionados por ’JorgeBrito’ em nível 2:RESULTADO2(Cpf)← πCpf1(SUPERV ISAO onCpf2=Cpf RESULTADO1)

Para obter ambos os conjuntos de funcionários supervisionadosem níveis 1 e 2 por “Jorge Brito”.

RESULTADO ← RESULTADO2 ∪ RESULTADO1

Exemplo de Operação de Fechamento Recursivo Operação Junção Externa

I É uma extensão da operação de Junção.I As operações de junção vistas até agora casam apenas as

tuplas que satisfazem a condição de junção.I Operações de junções externas são usadas quando se

deseja manter todas as tuplas em R, ou todas em S, ou emambas as relações no resultado da junção(independentemente de elas terem ou não tuplascorrespondentes na outra relação).

I Exemplo: Lista dos nomes de todos os funcionários etambém o nome dos departamentos que eles gerenciam (senão gerenciarem nenhum, isso será indicado com valoresnull).

Exemplo de Operação Junção ExternaJunção Externa à Esquerda:

TEMP ← (FUNCIONARIO Cpf=Cpf_gerenteDEPARTAMENTO)

RESULTADO ← πPnome,Minicial,Unome,Dnome(TEMP )

Operação Junção Externa

Observações:

I A operação (R S) mantém toda tupla da relação àesquerda (R) e, se nenhuma tupla correspondente éencontrada em S, então os atributos de S no resultado dajunção são preenchidos com valores null.

I Uma operação similar é a Junção Externa à Direita,indicada por R S, que mantém toda tupla da relação àdireita (S) no resultado da junção.

I Existe também a Junção Externa Total, que mantémtoda tupla das relações à esquerda e à direita no resultadoda junção.

Operação União Externa

I É a união de tuplas de duas relações que não sãocompatíveis na união.

I União das relações R(X,Y ) e S(X,Z) (parcialmentecompatíveis).

I Os atributos que são compatíveis na união sãorepresentados apenas uma vez no resultado (T ) e os demaistambém serão mantidos na relação de resultado, gerando arelação T (X,Y, Z).

I As tuplas t1 em R e t2 em S que forem “casadas”(t1[X] = t2[X]) serão combinadas em uma única tupla emT .

I As tuplas em qualquer uma das relações que não têm tuplascasadas na outra relação serão preenchidas com valores null.

Exemplo de Operação União Externa

I União externa aplicada às relações cujos esquemas são:I ALUNO(Nome,Cpf,Departamento,Orientador)I PROF (Nome,Cpf,Departamento, Classificacao)

I A relação resultado terá os seguintes atributos:I ALUNO_OU_PROF (Nome,Cpf,Departamento,Orientador, Classificacao)

I Todas as tuplas de ambas as relações serão incluídas noresultado.

I Mas as tuplas com a mesma combinação(Nome,Cpf,Departamento) aparecerão apenas uma vez noresultado.

Cálculo Relacional

I Linguagem de consulta não procedural.I Duas categorias de linguagens:

I Cálculo relacional de tupla.I Cálculo relacional de domínio.

I Tem o mesmo poder expressivo da álgebra relacional.

Cálculo Relacional de Tupla

I Forma Geral:

{t,v,...,x | P(t,v,...,x)}

Variáveis livres Predicado aplicado à t,v,...,x

I Variáveis livres:I São variáveis de tuplas (assumem valores de tuplas de uma

ou mais relações).I Participam da resposta da consulta.

I Predicado:I Expressão lógica que, se verdadeira, retorna os valores das

variáveis livres na resposta da consulta.

Cálculo Relacional de Tupla

I Exemplo: Encontrar todos os funcionários cujo salário estáacima de 50 mil reais.

{t|FUNCIONARIO(t) AND t.Salario > 50000}

I A condição FUNCIONARIO(t) especifica que a relaçãode intervalo da variável de tupla t é FUNCIONARIO.

I Cada tupla FUNCIONARIO t que satisfizer a condiçãot.Salario > 50000 será recuperada.

I A consulta anterior recupera todos os valores de atributopara cada tupla t de FUNCIONARIO selecionada. Pararecuperarmos apenas alguns atributos, escrevemos:

{t.Pnome, t.Unome|FUNCIONARIO(t) AND t.Salario > 50000}

Cálculo Relacional de Domínio

I Ao invés de ter variáveis abrangendo as tuplas, em cálculorelacional de domínio, as variáveis estão relacionadas comos atributos.

I Exemplo: Recupere a data de nascimento e o endereço dofuncionário cujo nome seja “João B. Silva”.

{uv|(∃q)(∃r)(∃s)(∃t)(∃w)(∃x)(∃y)(∃z)(FUNCIONARIO(qrstuvwxyz) AND q =′

Joao′ AND r =′ B′ AND s =′ Silva′)}

I Cada variável está associada (na ordem em que aparecemna relação) a um atributo da relação.

Perguntas

FIM