Á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.

lu768419mai_tmp_ae8fd5af41bd0c86

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.

lu768419mai_tmp_a8df7feb4a53d268

Exemplo prático de união:

lu768419mai_tmp_52e9876be4aa5e32

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.

lu768419mai_tmp_967cefe67008449a

Exemplo Prático:

lu768419mai_tmp_64ad43655e3e4cee

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.

lu768419mai_tmp_71d1d496e49775c2

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:

lu768419mai_tmp_bb1d9f4e89a1dfd6

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.

lu768419mai_tmp_60f659e5d6d00ad1

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).

lu768419mai_tmp_8b7602ae88a08835

Exemplo Prático:

lu768419mai_tmp_e7d3d667269e2e7b

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.

lu768419mai_tmp_c282ad9f2bb4404d

Exemplo Prático:

lu768419mai_tmp_455bf562a641e8d3

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:

lu768419mai_tmp_c2167065100cf7f3

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)

lu768419mai_tmp_70eadf4029d5895c

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

lu768419mai_tmp_fe64556c48b0634

Full Outer Join (Junção Externa Completa)

lu768419mai_tmp_8bd610f2f6df0bda

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

lu768419mai_tmp_1fa4eaa744b6e9fe

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

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

lu768419mai_tmp_bed3178d2606b62f

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

lu768419mai_tmp_cf138831f74ca9b0

Full Outer Join (Junção Externa Completa)

lu768419mai_tmp_4a04256379999aa5

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.

lu768419mai_tmp_99d9fe4f7fcb54e3

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 *

Rolar para cima