quinta-feira, 22 de outubro de 2009

Álgebra Relacional

1) Quantos e Quais são os grupos nos quais a álgebra relacional está dividida? Identifique quais operações pertencem a cada um deles.

As operações da álgebra relacional são normalmente divididas em dois grupos. O primeiro deles inclui um conjunto de operações da teoria de conjuntos. As operações são UNION, INTERSECTION, DIFFERENCE e CARTESIAN PRODUCT. O segundo grupo consiste de operações desenvolvidas especificamente para bases de dados relacionais, tais como: SELECT, PROJECT e JOIN entre outras

2) Explique a Operação SELECT e PROJECT. Quando usar, Para que usar, Como usar, diferenças, etc.


A operação SELECT é usada para selecionar um subconjunto de tuplas de uma relação. Estas tuplas devem satisfazer uma condição de seleção. O operador SELECT é unário; isto é, ele é aplicado somente a uma relação. Assim, o SELECTnão pode ser usado para selecionar tuplas de mais de uma relação. Note-se também que a operação de seleção é aplicada individualmente para cada tupla. Assim, as condições de seleção não podem ser aplicadas a mais que uma tupla. O grau da relação resultante é a mesma que a relação original. O número de tuplas da relação resultante é sempre menor ou igual ao número de tuplas da relação original.

Pensando na relação como uma tabela, então o operador SELECT seleciona algumas linhas da tabela enquanto descarta outras. O operador PROJECT, por outro lado, seleciona certas colunas da tabela e descarta outras. Se existir o interesse sobre certos atributos da relação, pode-se usar o PROJECT para “projetar” a relação sobre esses atributos. Por exemplo, suponha a necessidade de listar, para cada empregado, os atributos PNOME, SNOME e SALÁRIO; então pode-se usar o PROJECT como segue:

SNOME, PNOME, SALÁRIO (EMPREGADO).


3) Explique a Operação UNION, INTERSECTION e DIFFERENCE. Quando usar, Para que usar, Como usar, etc


União (UNION): R U S

É outra relação Z que Inclui todas as tuplas da relação R e em S, ou em ambas, mas elimina as tuplas repetidas. Utilizar a operação união gera muitas vantagens e economiza muitas linhas de programação, essa operação permite reunir várias consultas num só resultado.

Intersecção (INTERSECTION): R S

É outra relação Z que inclui todas as tuplas que estão em ambas às relações R e S. É importante salientar que a diferença entre a primeira e segunda relação não é o mesmo do inverso, ou seja, da segunda pela primeira. Com isso podemos dizer que a operação de diferença não é comutativa.

Diferença (DIFFERENCE): R - S

É outra relação Z que inclui todas as tuplas de R, mas não em S

Note que as operações UNION e INTERSECTION são operações comutativas:

R U S = S U R, e R S = S R.

Estas operações podem ser aplicadas a qualquer número de relações, e ambas são associativas:

R U (S U T) = (R U S) U T, e

R (S ∩ T) = (R ∩ S) ∩ T.


A operação DIFFERENCE não é comutativa:

R - S S - R.


4) Explique a Operação CARTESIAN PRODUCT. Quando usar, Para que usar, Como usar, etc.


A operação CARTESIAN PRODUCT, denotada por x, é também uma operação de conjunto binária, mas as relações sobre as quais são aplicadas não necessitam ser união compatível.

Esta operação é usada para combinar tuplas de duas relações tal que tuplas relacionadas possam ser identificadas.

Em geral, o resultado de R(A1, A2, ..., An) x S(B1, B2, ..., Bm) é a relação Q com n + m atributos Q(A1, A2, ..., An, B1, B2, ..., Bm) nesta ordem. A relação resultante Q tem uma tupla para cada combinação de tuplas. Assim, se R tem nR tuplas e S tem nS tuplas, então RxS terá nR*nS tuplas. Para ilustrar, considere que se deseja recuperar para cada empregado do sexo feminino uma lista de nomes de seus dependentes.

5) Explique as Operações de junção (JOIN) e divisão (DIVISION). Quando usar, Para que usar, Como usar, etc


Operação de Junção (JOIN)

A operação de junção é utilizada para combinar tuplas de duas relações partindo dos atributos comuns a ambas. O resultado conterá as colunas das duas relações que estão participando da junção. Esta operação é de extrema importância em bancos de dados relacionais, pois é através dela que nos é permitido fazer relacionamento.
Representação gráfica:
Simbologia: |x|
Sintaxe: (Relação 1) |x| (Relação 2)
Obs.: Uma condição de junção pode ser formada por mais de uma condição simples, apenas aplicando os operadores relacionais AND ou OR.

Exemplo utilizando as seguintes relações:

ALUNOS

nome

sobrenome

turma

Cecília

Ortiz Rezende

2TI

João

da Silva

1TI

Laura

Nogueira

2TI

Elaine

Cristina

2TI

TURMAS

cod_turma

descricao

1TI

1º Módulo - Informática

2TI

2º Módulo - Informática

1TA

1º Módulo - Administração

2TA

2º Módulo - Administração

ALU_TUR <----- ALUNOS |x| TURMA=cod_turma TURMAS, resulta em:

nome

sobrenome

turma

cod_turma

descricao

Cecília

Ortiz Rezende

2TI

2TI

2º Módulo - Informática

João

da Silva

1TI

1TI

1º Módulo - Informática

Laura

Nogueira

2TI

2TI

2º Módulo - Informática

Elaine

Cristina

2TI

2TI

2º Módulo - Informática

E finalmente, podemos usar um conjunto de operações para trazer, por exemplo, apenas os alunos que cursam o 1 º módulo de Informática:

RESULT <----- cod_turma >=1TI ( NOME, SOBRENOME, DESCRICAO (ALUNOS |x| TURMA=COD_TURMA TURMAS)), que resulta em:

nome

sobrenome

descricao

Cecilia

Ortiz Rezende

2º Módulo - Informática

Laura

Nogueira

2º Módulo - Informática

Elaine

Cristina

2º Módulo - Informática

Existe mais de uma operação (JOIN).

INNER JOIN

NNER JOIN (junção interna) é uma operação JOIN que permite especificar uma cláusula de junção explícita. Permite juntar informações de duas tabelas.

Sintaxe

ExpressãoTabela [ INNER ] JOIN ExpressãoTabela { ON ExpressãoBooleana }

LEFT OUTER JOIN

LEFT OUTER JOIN é uma operação JOIN permite especificar a cláusula de junção. Preserva as linhas sem correspondência da primeira tabela (esquerda), juntando-as com uma linha nula na forma da segunda tabela (direita).

Sintaxe

ExpressãoTabela LEFT [ OUTER ] JOIN ExpressãoTabela
{
    ON ExpressãoBooleana
    }

RIGHT OUTER JOIN

RIGHT OUTER JOIN é uma operação JOINque permite especificar a cláusula de junção. Preserva as linhas sem correspondência da segunda tabela (direita), juntando-as com uma linha nula na forma da primeira tabela (esquerda). (A LEFT OUTER JOIN B) é equivalente a (B RIGHT OUTER JOIN A), com as colunas em uma ordem diferente.

Sintaxe

ExpressãoTabela RIGHT [ OUTER ] JOIN ExpressãoTabela
{
    ON ExpressãoBooleana
    }

Operação de Divisão (DIVISION)

É uma operação adicional que produz como resultado a projeção de todos os elementos da primeira relação que se relacionam com todos os elementos da segunda relação. Não é um operador primitivo, mas pode ter o resultado obtido por uma combinação de operadores primitivos.
Representação gráfica:
Símbologia: ÷
Sintaxe: (Relação 1) ÷ (Relação 2)

Exemplo utilizando as seguintes relações:

EQUIPE

id_emp

cod_proj

17206-2

001

12584-7

002

16764-6

001

17206-2

002

15698-3

003

17206-2

003

PROJETOS

cod_proj

descricao

001

Sistema IRPF

002

Sistema RH

003

Sistema Banco

FUNCIONARIO

id_emp

nome

cargo

17206-2

Jorge

Analista

12584-7

Paula

Programadora

16764-6

Frederico

DBA

15698-3

Heloisa

Web Master

Imaginemos a situação em queremos saber quais os funcionários que trabalham em todos os projetos:

RESULT <----- ( COD_PROJ (PROJETOS)) ÷ ( ID_EMP, COD_PROJ (EQUIPE)), que resulta em:

id_emp

17206-2



6-)Explique as Operações de AGREGAÇÃO. Quando usar, Para que usar, Como usar, etc.


Agregação: As funções de agregação operam em conjunto de linhas, de modo que fornecem
um resultado por grupo (tabela ou parte da tabela).
O operador de agrupamento reune as tuplas em grupos sobre os quais podem ser aplicadas funções agregadas.
As funções de agregação mais comuns são SOMA (SUM), MÉDIA(AVG), MÁXIMO(MAX), MÍNIMO(MIN) e CONTAR(COUNT).


Exemplos:
Considerando a relação: R1 (C1, C2,C3), o agrupamento pode ser aplicado da seguinte maneira:

C1 ? C1, SUM(C2) (R1)

Expressão a ser resolvida conforme os passos a seguir:
As tuplas da relação R1 são particionadas em grupos, conforme o valor de C1. Ou seja, as tuplas que possuírem o mesmo valor em C1 serão reunidas em um grupo. Caso não exista coluna informada na lista de colunas agrupadoras, apenas um grupo com todas as tuplas da relação é formado.
Para cada grupo, uma nova tupla é produzida. Caso nenhuma coluna projetada ou função tenha sido informada, a tupla será composta apenas pelos valores resultantes do agrupamento. Caso contrário, a nova tupla será composta por:
As colunas projetadas.
A aplicação das funções agrupadoras ao grupo. No exemplo, para cada grupo, a coluna C2 será somada, produzindo o valor da nova tupla.

Outros exemplos:

C3 ? (R1)
Produz uma nova relação agrupando os valores da coluna C3.

? MAX(C3) (R1)
Produz uma nova relação com apenas uma tupla, contendo o maior valor da coluna C3.

C1 ? C1, SUM(C3)->SOMA (R1)
Produz uma nova relação a partir do agrupamento das tuplas a partir da coluna C1, contento a coluna C1 e o resultado da soma da coluna C3 renomeado para SOMA.