Álgebra Relacional – Parte I

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (43)  (2)

Veja neste artigo linguagens de consulta formal.


Linguagem de consulta formal

Dando continuidade à série de artigos para que o internauta entre no mundo dos bancos de dados, sugiro que você leia meus dois primeiros artigos (Conceitos Fundamentais de Banco de Dados – Parte I e II) e também os artigos do Reinaldo Viana (Banco de Dados e Modelagem de Dados – Parte I, II e Final), para que haja uma perfeita compreensão dos conceitos e metodologias de um projeto de BD.
Darei continuidade falando sobre Linguagem de Consulta Formal, abordando a Álgebra Relacional.
Linguagens de consulta formal são linguagens em que o usuário solicita informações à base de dados. Geralmente formam uma linguagem de mais alto nível que as linguagens de programação.
A Álgebra Relacional é uma linguagem de consulta formal, porém procedimental, ou seja, o usuário dá as instruções ao sistema para que o mesmo realize uma seqüência de operações na base de dados para calcular o resultado desejado.
A Álgebra Relacional define operadores para atuar nas tabelas (semelhante aos operadores +, -, etc. da álgebra que estamos acostumados) para chegar ao resultado desejado.
A forma de trabalho desta linguagem de consulta é a de pegar uma ou mais tabelas (conforme necessidade) como entrada de dados e produzirá uma nova tabela como resultado das operações.

Funções da Álgebra Relacional


São definidas nove operações para se trabalhar com álgebra relacional:

  • Union –União;
    Intersection– Intersecção;
    Difference– Diferença, Subtração;
    Product – Produto, Produto Cartesiano.

Estas quatro operações são provenientes da teoria de conjuntos, da matemática.

  • Select– Seleção;
    Project– Projeção;
    Join– Junção;
    Divide – Divisão.

Aplicam-se especificamente ao modelo de dados relacional.

  • Assignment– Designação, Atribuição.

É uma operação padrão das linguagens computacionais.
Utilizaremos a seguinte tabela como estudo de caso para exemplificar nossas operações:
EMPREGADO.

23-08pic01.JPG 

Atribuindo um valor a uma nova tabela

O objetivo do operador de designação/atribuição é atribuir o resultado de uma operação a uma nova relação.
Simbologia: <-------- Ex.: R <----- A
U
B
Sintaxe: := Ex.: R := union(B, C)

Operação de Seleção (Select)

É utilizada para selecionar um subconjunto de tuplas numa relação que satisfaça uma condição de seleção predefinida.
Representação gráfica:

Simbologia: 23-08pic06.JPG

Sintaxe:
23-08pic06.JPG (Relação)
Exemplo:
23-08pic06.JPG
sal>=2500 (EMPREGADO)
A seleção acima nos apresentará como resultado as informações abaixo:

23-08pic04.JPG 

Operação de Projeção (Project)

A operação de projeção é utilizada para selecionar determinadas colunas de uma relação. A operação é executada em apenas uma relação e o resultado é uma nova relação contendo apenas os atributos selecionados, eliminando-se as duplicidades.
Simbologia: 23-08pic02.JPG

Sintaxe: 23-08pic02.JPG (Relação)
Exemplo: 23-08pic02.JPG
NOME, SOBRENOME, SAL (EMPREGADO)
Teremos o seguinte resultado a partir da consulta acima:

NOME

SOBREN

SAL

José

da Silva

7000

Cecília

Ortiz Rezende

3200

Pedro

Silvestre

2800

Felipe

Guilhermino

1800

Luciana

Feitosa

1500

Fabio

Santos Silva

1500

Elaine

Cristina

2500

Cleiton

Fernandes

2200

Aninhar de operações e renomear de atributos

Podemos aninhar as operações e produzir novos resultados sem a necessidade de sucessivas operações. Imaginem se nos interessa apenas o nome, sobrenome e salário dos funcionários do departamento número 3. Vejamos como ficaria a expressão em álgebra relacional:

1 =>Relação = Tabela, entidade, na terminologia formal de banco de dados.
2 =>Tupla = Linha da tabela, registro, na terminologia formal de banco de dados.

23-08pic02.JPG NOME, SOBRENOME, SAL (23-08pic06.JPG DEPTO=3 (EMPREGADO)), que nos produziria o seguinte resultado:

 

NOME

SOBREN

SAL

Cecília

Ortiz Rezende

3200

Felipe

Guilhermino

1800

Elaine

Cristina

2500

Cleiton

Fernandes

2200

Podemos ainda, criar relações intermediárias, dando um nome para cada uma delas e finalmente chegando ao resultado desejado:

R1 <----
23-08pic06.JPG
DEPTO=3 (EMPREGADO)
E logo após:
RESULT <----- 23-08pic02.JPG
NOME, SOBRENOME, SAL (R1), onde RESULT produziria o mesmo resultado da expressão aninhada.

E finalmente, ainda podemos renomear os atributos que aparecerão na relação resultante, para isso, basta identificar o novo nome para os atributos:
RESULT(Nome, Sobrenome, Salário) <----- 23-08pic02.JPG
NOME, SOBRENOME, SAL (23-08pic06.JPG DEPTO=3 (EMPREGADO))

Result:

NOME

SOBREN

SAL

Cecília

Ortiz Rezende

3200

Felipe

Guilhermino

1800

Elaine

Cristina

2500

Cleiton

Fernandes

2200

Revendo a teoria dos conjuntos

Vamos descrever as funções da álgebra relacional pelas operações que vieram da teoria dos conjuntos:

União (Union)

O operador de união cria uma relação partindo de duas outras, levando as tuplas comuns e não comuns a ambas, desta forma aparecerão no resultado somente linhas únicas de uma ou outra relação e as informações duplicadas aparecerão somente uma vez.

Uma característica é que somente é possível utilizar este operador caso as tabelas de origem possuam compatibilidade de união, ou seja, as tabelas devem ser equivalentes e gerem o mesmo tipo de resultado.
Representação gráfica:

Simbologia:
U

Sintaxe: (Relação 1)U(Relação 2)

Exemplo: Imagine que precisemos recuperar A identificação de todos os empregados que trabalham no departamento 3 ou supervisione diretamente um empregado que trabalhe no departamento 3. Faremos as seguintes operações:

DEPTO3 <---- 23-08pic06.JPG DEPTO=3 (EMPREGADO)
DEPTO3

23-08pic05.JPG

RESULT1 <---- 23-08pic02.JPG ID_EMP (DEPTO3)
RESULT1

ID_EMP

12584-7

17987-5

16257-2

15234-1

RESULT2 <---- 23-08pic02.JPG ID_GER (DEPTO3)
RESULT2

ID_GER

17206-2

12584-7

RESULT(ID) <----- (RESULT1)U(RESULT2)
RESULT

ID

12584-7

17987-5

16257-2

15234-1

17206-2

Somente foi possível realizar a união entre RESULT1 e RESULT2, pois, apesar dos atributos serem diferentes, o número e o tipo de atributos são os mesmos, possibilitando uma compatibilidade de união.

Intersecção (Intersection)

A relação criada pela operação de intersecção será o resultado de todas as tuplas que pertençam a ambas as relações presentes na operação.
Representação gráfica:

Simbologia: 23-08pic03.JPG
Sintaxe: (Relação 1)23-08pic03.JPG(Relação 2)
Como exemplo, considere as seguintes relações:

ALUNOS

NOME

SOBRENOME

Cecília

Ortiz Rezende

João

da Silva

Laura

Nogueira

Elaine

Cristina

Paulo

Vidigal

Pedro

Teodoro

Sandra

Oliveira

Marcio

Santos

Elisabeth

de Souza

INSTRUTORES

NOME

SOBRENOME

Joel

Nunes

Marcio

Santos

Paula

Andrade

Reinaldo

Fagundes

Cecília

Ortiz Rezende

Desta forma, uma operação de intersecção entre as duas relações, seria executada da seguinte forma:
RESULTADO <---- (ALUNOS) 23-08pic03.JPG
(INSTRUTORES) e produziria a seguinte relação:

RESULTADO

NOME

SOBRENOME

Marcio

Santos

Cecília

Ortiz Rezende

Uma observação extremamente relevante a ser feita é que ambas as operações de união ou intersecção são:

  • Comutativas, ou seja, AUB = BUA e A23-08pic03.JPGB = B23-08pic03.JPGA;
    Aplicadas a qualquer número de relações;
     
  • Associativas, ou seja, AU(BUC) = (AUB)UC e A23-08pic03.JPG(B23-08pic03.JPGC) = (A23-08pic03.JPGB)23-08pic03.JPGC

Conclusões

Vimos neste artigo como efetuar consultas através da álgebra relacional.
É uma ferramenta bastante poderosa principalmente no auxílio à definição lógica de abordagem a dados
em tabelas.
Fica claro que muitos conceitos trazidos da matemática tradicional são extremamente aplicáveis a esta técnica.
No próximo artigo veremos as quatro operações restantes: Difference e Product, da teoria de conjuntos e Join e Divide, específicas do modelo relacional.
Até a próxima.

 

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?