Álgebra Relacional

Os bancos de dados tem o objetivo de permitir a armazenagem de dados de forma a facilitar sua recuperação. Então o que tem a ver Banco de Dados Relacional com álgebra relacional?

Toda a teoria e embasamento do banco de dados relacional vêm da álgebra relacional. Então passamos a observar as tabelas como conjuntos e cada linha de uma tabela é um elemento de um conjunto. Então as operações de manipulação de dados são apenas herança das operações utilizadas na teoria dos conjuntos. A linguagem SQL e suas operações são todas baseadas na álgebra relacional.

Coleção de operações usadas para manipular relações inteiras. O resultado dessas operações é uma nova relação, que por sua vez pode ser manipulada pelas operações da álgebra relacional (Propriedade de Fechamento da Álgebra Relacional).

Conceitos envolvidos:

  • Relação: representada por uma tabela de duas dimensões (linhas e colunas);

  • Tupla: corresponde a uma linha da relação;

  • Atributo: corresponde às colunas da relação;

  • Grau da Relação: número de atributos.

  • Chave primária: conjunto de atributos que identificam univocamente cada tupla da relação;

  • Chave estrangeira: atributo de uma relação que é chave primária de outra relação.

Operadores

Podem ser agrupadas em duas categorias:

Operadores de Conjuntos Tradicionais:

  • União;

  • Interseção;

  • Diferença;

  • Produto Cartesiano.

Operadores Relacionais Especiais:

  • Seleção;

  • Projeção;

  • Junção;

  • Divisão.

Conjuntos Tradicionais
União (Union)

É um operador binário, pois é utilizado em duas relações. Tem o objetivo de construir uma relação consistindo em todas as tuplas que aparecem nas relações específicas.

As duas relações devem possuir o mesmo número de colunas e cada par de colunas correspondentes possui o mesmo domínio (compatíveis para união). Deve ter o mesmo domínio para que as colunas sejam de tipos compatíveis. Não é possível fazer união de duas relações sendo que a primeira coluna da Relação 1 seja nome, e a primeira coluna da relação 2 seja idade.

Exemplo prático de união:

Observação:

A união por padrão não apresenta repetição, é por isso que temos apenas uma tupla com Abel. Caso se deseje que apareçam as duas linhas repetidas no SQL isso é feito utilizando UNION ALL.

Interseção (Intersect)

É um operador binário, que constrói uma relação consistindo em todas as tuplas que aparecem em ambos os pares de relações específicas. Se não existirem tuplas em comum o resultado da operação será uma relação vazia.

Exemplo Prático:

Diferença (Diference)

É um operador binário que constrói uma relação consistindo em todas as tuplas que aparecem na primeira, mas não na segunda, do par de relações específicas.

No Oracle a operação para realizar diferença é MINUS, e a ordem da operação faz diferença. A-B <> B-A, isso só vai ser verdadeiro se os elementos forem iguais, onde o resultado dará vazio para as duas.

Exemplo Prático:

Produto Cartesiano (Product)

É um operador binário que constrói uma relação a partir de duas relações específicas consistindo em todas as possibilidades de pares de tuplas concatenados, uma de cada uma das duas relações específicas.

Podemos afirmar então que o Produto Cartesiano de uma Tabela com 50 registros com uma tabela com 10 registros irá resultar em uma tabela com 500 registros (50 * 10).

Relacionais Especiais
Seleção (Selection) ou Particionamento Horizontal

Tem como símbolo a letra σ (sigma). É um Operador unário (aquele que atua/opera sobre apenas uma relação/conjunto de entrada). Tem o objetivo de Extrair tuplas específicas de uma relação específica, As tuplas são linhas horizontais, daí o nome Particionamento Horizontal.

Esta operação sobre uma tabela resulta em uma relação que contém apenas as tuplas que satisfazem à comparação indicada na operação.

O grau da relação resultante é igual ao grau da relação R original (Não confundir o SELECT do SQL com o Selection da álgebra. O Selection da álgebra retorna todos os campos, o do SQL vc escolhe quais, essa escolha é chamada de Projeção. Ou seja o SELECT do SQL faz uma projeção e uma seleção simultânea).

Exemplo Prático:

Projeção (Projection) ou Particionamento Vertical

Tem como símbolo a letra π (pi). É um operador Unário, que extrai determinadas colunas de uma tabela e descarta outras.

Remove quaisquer tuplas replicadas (Eliminação de Duplicatas). Por isso, podemos dizer que o número de tuplas em uma relação resultante de uma operação PROJETAR é sempre menor ou igual ao número de tuplas em R.

Exemplo Prático:

Junção (Join)

É um operador binário, cujo símbolo é |X|. Constrói uma relação a partir de duas relações específicas consistindo em todas as possibilidades de pares de tuplas concatenados, uma de cada uma das duas relações específicas, de forma que em cada par as duas tuplas satisfaçam uma condição específica.

A junção é um filtro do produto cartesiano. Ou seja, primeiro é feito o produto cartesiano e depois se filtra. O exemplo abaixo é feito utilizando o EquiJoin:

EquiJoin (Junção Interna)

Equivalente ao inner join do SQL, é a junção mais comum, envolve condições de junção somente com comparações de igualdade.

Natural Join

Operação que utiliza o símbolo *. Foi criada para eliminar repetição desnecessária dos atributos em uma EQUIJOIN. Se duas relações tiverem o atributo nome, será aplicado um equijoin unindo as duas tabelas pelo atributo nome.

Na Junção Natural é necessário que as duas colunas redundantes possuam o mesmo nome, pode-se renomear uma das colunas antes da junção. Caso tenhamos duas tabelas Empresa e Pessoa, ele tentará erroneamente fazer um natural Join com os campos Nome.

Outer Join (Junção Externa):

Utilizado quando desejamos manter todas as tuplas de uma das duas relações ou todas as tuplas das duas relações em uma operação de junção:

Pode ser:

Nome

Símbolo

Left Outer Join (Junção Externa à Esquerda)

Right Outer Join (Junção Externa à Direita)

Full Outer Join (Junção Externa Completa)

A tabela abaixo será utilizada nos três tipos de junção externa para demonstrar o conceito:

O Outer Join sempre apresentará o mesmo, ou mais tuplas que um Inner Join.

Left Outer Join (Junção Externa à Esquerda)

Right Outer Join (Junção Externa à Direita)

Full Outer Join (Junção Externa Completa)

Full Outer Join não é a mesma coisa que produto cartesiano. O Full Outer Join lista as tuplas de uma tabela, e as tuplas da outra, sendo que quando elas se relacionarem mostra apenas uma.

Divisão (Divide)

É representada pelo símbolo ÷. Em geral, toma duas relações, uma binária e outra unária, e constrói uma relação consistindo em todos os valores de um atributo da relação binária com equivalência (no outro atributo) a todos os valores da relação unária.

Observe que existem duas B, pois são duas consultas diferentes. Observe que o resultado da divisão por B2 retornará (A÷1B2) (A÷2B2), e apenas a coluna CodMed.

Idempotência

Em matemática e ciência da computação, a Idempotência é a propriedade que algumas operações têm de poderem ser aplicadas várias vezes sem que o valor do resultado se altere após a aplicação inicial.

Na álgebra relacional, as operações de união, interseção e junção são idempotentes, isto é:

  • A união A = A

  • A interseção A = A

  • A junção A = A

Resolução de Questões de Concursos Anteriores

TJ-RJ – Analista Judiciário – 2012 – FCC

Considere a seguinte tabela de um banco de dados.

TAB_FUNC = {COD_FUNC, NOME, COD_DEP, SAL}

Uma expressão da álgebra relacional representando a tabela formada pelos códigos (COD_FUNC) e nomes (NOME) dos funcionários que ganham salário (SAL) entre 1000 e 3000 reais e trabalham no departamento de código (COD_DEP) 3 é

a) π COD_FUNC,NOME(σ COD_DEP=3 & SAL>1000 & SAL<3000(TAB_FUNC))

b) ( SAL>1000 & SAL<3000(TAB_FUNC))

c) COD_DEP( SAL > 1000 & SAL < 3000(TAB_FUNC))

d) ( SAL < 1000 & SAL <3000 & COD_DEP=3(COD_FUNC,NOME))

e) NOME,COD_FUNC( COD_DEP=3 & SAL>1000 & SAL>3000(TAB_FUNC))

RESPOSTA: A

É necessário fazer uma projeção (π) com uma seleção (σ). A única alternativa que apresenta estas operações relacionais é a letra A.

  • Operação 01 de Seleção: σ COD_DEP=3 & SAL>1000 & SAL<3000 (TAB_FUNC)

  • Operação 02 de Projeção: π COD_FUNC,NOME (OPERAÇÃO01)

INFRAERO – Analista de Sistemas – 2011 – FCC

No âmbito da álgebra relacional, os símbolos p (Pi) e s (Sigma) são utilizados, respectivamente, em operações de

a) reunião ou seleção; e intersecção ou projeção.

b) projeção ou particionamento horizontal; e seleção ou particionamento vertical.

c) projeção ou particionamento vertical; e seleção ou particionamento horizontal.

d) seleção ou particionamento horizontal; e projeção ou particionamento vertical.

e) seleção ou particionamento vertical; e projeção ou particionamento horizontal.

RESPOSTA: C

Pi é utilizado na projeção, e sigma na seleção.

TRT 19ª Região – Analista Judiciário – 2011 – FCC

É uma operação que produz uma combinação entre as linhas de uma tabela com as linhas correspondentes de outra tabela, sendo, em princípio, correspondente a uma seleção pelos atributos de relacionamento sobre um produto cartesiano dessas tabelas. Na álgebra relacional, trata-se de

a) junção, cuja notação, por exemplo, é A n B.

b) junção, cuja notação, por exemplo, é A |x| B.

c) intersecção, cuja notação, por exemplo, é A |x| B.

d) projeção, cuja notação, por exemplo, é A σ B.

e) projeção, cuja notação, por exemplo, é A ? B.

RESPOSTA: B

A junção faz um produto cartesiano, e aplica um filtro. Como neste exemplo o filtro é a igualdade entre campos de relacionamento, temos um INNER JOIN, representado por |x|.

MPE-RN – Analista de Tecnologia da Informação – 2010 – FCC

Na terminologia do Modelo Relacional, cada linha da tabela é chamada de __ I __ a tabela é denominada II e o nome da coluna é denominado III .

As lacunas I, II e III são preenchidas de forma correta, respectivamente, por

a) registro, arquivo e campo.

b) tupla, relação e atributo.

c) esquema, instância e domínio.

d) registro, relação e domínio.

e) tupla, instância e atributo.

RESPOSTA: B

TRF 5ª Região – Analista Judiciário – 2008 – FCC

A operação relacional geralmente representada pela letra grega (pi) é

a) unária, do tipo adicional e significa seleção com a função de filtro de colunas.

b) unária, do tipo primitiva e significa seleção com a função de filtro de linhas.

c) unária, do tipo primitiva e significa projeção com a função de filtro de colunas.

d) binária, do tipo primitiva e significa seleção com a função de filtro de colunas.

e) binária, do tipo adicional e significa projeção com a função de filtro de linhas.

RESPOSTA: C

Projeção: Geralmente indicada na literatura por (a letra grega pi) produz um conjunto onde há um elemento para cada elemento do conjunto de entrada, sendo que a estrutura dos membros do conjunto resultante é definida nos argumentos da operação. Pode ser entendida como uma operação que filtra as colunas de uma tabela. Por operar sobre apenas um conjunto de entrada, a projeção é classificada como uma operação unária.

MPU – Analista de Sistemas – 2007 – FCC

No estágio 2 de otimização dos sistemas relacionais, para transformação de expressões, pode-se aplicar a propriedade idempotência apenas nas operações da álgebra relacional

a) união, interseção e divisão.

b) união, interseção e junção.

c) união, junção e diferença.

d) interseção, diferença e divisão.

e) junção, diferença e divisão.

RESPOSTA: B

Em matemática e ciência da computação, a idempotência é a propriedade que algumas operações têm de poderem ser aplicadas várias vezes sem que o valor do resultado se altere após a aplicação inicial.

Na álgebra relacional, as operações de união, interseção e junção são idempotentes, isto é:

  • A união A = A

  • A interseção A = A

  • A junção A = A

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Sair da versão mobile