Este artigo tem o objetivo de apresentar a álgebra relacional como um instrumento para implementação de consultas em um sistema gerenciador de banco de dados relacional.

A Álgebra Relacional é uma linguagem de consulta procedural (o usuário descreve os passos a serem executados) e formal a qual a técnica utilizada é fundamental para a extração de dados de um banco de dados, além de ser um conjunto de operações, os quais utilizam como recurso de entrada uma ou mais relações, produzindo então, uma nova relação. Neste contexto uma seqüência de operações forma uma expressão em álgebra relacional cujo resultado também produzirá uma relação (uma consulta).

Na Álgebra Relacional existem os operadores tradicionais e os operadores relacionais, onde cada um apresenta a sua função e uma representação na construção de consultas. Para estudarmos as operações de Álgebra relacional deste artigo, apresenta-se abaixo um modelo de banco de dados elaborado a partir da ferramenta DBDesigner):

Modelo E-R elaborado no DBDesigner
Figura 1. Modelo E-R elaborado no DBDesigner

A seguir visualizaremos as respectivas tabelas “populadas”, as quais servirão de modelo para o aprendizado de álgebra relacional.

03-06-2008pic02.JPG
Nota: Os campos sublinhados são as chaves primarias e os em itálico as chaves estrangeiras.

Operadores

União (Union)

É uma operação binária que cria uma relação partindo de duas outras relações, estabelecendo assim, a união de todas as tuplas dessa nova relação. Seu símbolo é: U. Exemplo:

  • R = conjunto de tuplas de clientes de Petrópolis
  • S = conjunto de tuplas dos clientes que alugaram o filme “F2”
  • C = R U S
03-06-2008pic03.JPG

Intersection

É uma operação binária que cria uma relação partindo de duas outras relações, estabelecendo assim a intersecção das duas, gerando uma nova relação as quais estarão presentes apenas os dados pertencentes às duas condições pré-estabelecidas. Seu símbolo é:

C = R ⋂ S

Diferença (Difference)

É uma operação que cria uma relação partindo de duas outras relações, o qual resultará em uma nova relação que contenha todas as tuplas que pertençam à primeira relação e não pertença à segunda. Seu símbolo é: -.

C = R – S

03-06-2008pic06.JPG

Produto Cartesiano (Product)

Operação binária que permite a combinação de informações de duas relações quaisquer, assim a relação resultante conterá todas as tuplas da primeira relação relacionadas às da segunda relação. Seu símbolo é: ×. Exemplo:

  • K = conjunto de todos os códigos dos moradores de “Petrópolis”
  • L = conjunto de todos os códigos de filmes de 2001
  • C = K × L
03-06-2008pic07.JPG

Seleção (Select)

Operação unária, pois atua sobre uma única relação, produzindo um subconjunto apenas com os elementos especificados na condição. É conhecida também como uma operação que filtra linhas de uma tabela, através da construção de um subconjunto horizontal de uma relação. Seu símbolo é: σ. Exemplo:σ CIDADE = ‘Petrópolis’ (CLIENTES)

03-06-2008pic09.JPG

Projeção (Projection)

Esta operação também é unária. Produz um subconjunto com apenas as colunas escolhidas na condição especificada, filtrando colunas os quais se coloca na operação o nome das colunas desejadas para a criação do novo conjunto. Este tipo de relação é vertical e o seu símbolo é: π. Exemplo: π NOME_F, ANO (FILMES)

03-06-2008pic11.JPG

Divisão (Division)

Operação binária, a qual resultará em uma tabela que conterá apenas os elementos da primeira tabela que se relacionem com todos os elementos da segunda tabela. Seu símbolo é: ÷. Exemplo:π #C (LOCAÇÃO ÷ (π #F (FILMES))

03-06-2008pic12.JPG

Neste exemplo utilizamos também a operação projeção com seu respectivo símbolo já explicado anteriormente.

Junção (Join)

Esta operação tem como objetivo unir duas tabelas, as quais possuem um atributo em comum. Este tipo de operação é muito utilizado quando tratamos de relacionamentos com chaves estrangeiras, em que é realizada uma seleção a partir dos atributos de um relacionamento sobre um produto cartesiano das tabelas. Seu símbolo é: |x|. Clientes|x|Locação = σClientes.#C = Locação.#C (Clientes × Locação). Exemplo: π nome, idade (σ #F = F2 (Clientes |x| Locação))

03-06-2008pic13.JPG

É apresentado os nomes e as idades dos clientes que alugaram o filme de código “F2”. Observa-se a repetição da cliente Sophia, pois esta realiza duas locações do mesmo filme. Para resolvermos este problema, pode-se utilizar a operação de Junção Natural (Natural Join), na qual obtemos o mesmo resultado, porém sem repetições.

03-06-2008pic14.JPG

Renomear (rename)

Esta operação redefine um nome para um relacionamento, muito utilizada em casos que contêm expressões relacionais grandes. Dessa forma podemos realizar a divisão da expressão em duas ou mais sub-expressões para se obter o resultado esperado de forma mais simples. Sua simbologia é: ? ou Þ. Exemplo: ÞTemp (π nome, idade (σ #F = F2 (Clientes |x| Locação)))

Atribuição (Assigment)

É uma operação utilizada para atribuir a uma variável um determinado relacionamento. Seu símbolo é: <---. Exemplo: A<---(π nome, idade (σ #F = F2 (Clientes |x| Locação)))

  • B<---(π nome, idade (σ idade = 22 (Clientes)))
  • A ⋂ B

Conclusões

Com o uso dos operadores da álgebra relacional, é possível fazer uma simulação dos resultados a serem obtidos em uma consulta SQL. Logo, verifica-se a importância da álgebra relacional como um instrumento para o aprendizado de operações a serem realizadas em um banco de dados relacional, a partir de conceitos matemáticos da teoria dos conjuntos.

Referências:
  • [1] Gehrke, Ramakrishman. Sistema de Gerenciamento de Banco de Dados. MCGrawHill, 3ª edição – SP, 2008
  • [2] Raghu, Ramakrishman, Johannes, Gehrke. Sistemas de gerenciamento de banco de dados. 3ª Edição, Mc Graw Hill