segunda-feira, 26 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.

R: 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.

R: 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. Por exemplo, a seleção de um subconjunto
de tuplas da relação EMPREGADOS que trabalham para o departamento 4 ou que tenham
salário maior que 3000. Cada uma dessas condições é especificada individualmente usando a
operação SELECT como segue:

NDEP = 4 (EMPREGADO)

SALÁRIO > 3000 (EMPREGADO)

Em geral, a operação SELECT é denotada por:

()

onde o símbolo é usado para denotar o operador SELECT, e a condição de seleção é uma
expressão Booleana especificada sobre atributos da relação especificada.
A relação resultante da operação SELECT tem os mesmos atributos da relação especificada
em . A expressão Booleana especificada em é
construída a partir de cláusulas da forma:
, ou

O Operador PROJECT:

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)

A forma geral do operador PROJECT é:

()

onde é o símbolo usado para representar o operador PROJECT e é uma lista de atributos da relação especificada por . A relação resultante tem apenas os atributos especificados em e aparecem na mesma ordem que aparecem na lista. Assim, o grau é igual ao número de atributos em .


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

R: Existem várias operações da teoria de conjuntos que são utilizadas para agrupar elementos de
dois conjuntos, entre elas estão: UNION, INTERSECTION e DEFFERENCE. Estas operações
são binárias; isto é, elas necessitam de dois conjuntos. Quando essas operações são adaptadas para a base de dados relacional deve-se assegurar que essas operações resultem sempre em relações válidas.
Pode-se definir as três operações UNION, INTERSECTION e DIFFERENCE sobre duas relações que sejam união compatível R e S:

· UNION ¾ O resultado da operação, denotado por R È S, é uma relação que inclui todas as tuplas de R e todas as tuplas de S. Tuplas duplicadas são eliminadas.

· INTERSECTION ¾ O resultado desta operação, denotado por R Ç S, é a relação que inclui todas as tuplas que são comuns a R e S.

· DIFFERENCE ¾ O resultado desta operação, denotado por R - S, é a relação que inclui todas as tuplas de R, mas que não estão em S.


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

R: A operação CARTESIAN PRODUCT, denotada por c, é 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.

O CARTESIAN PRODUCT cria tuplas com atributos combinados de duas relações. Pode-se então selecionar apenas as tuplas que estejam relacionadas especificando uma condição de
seleção apropriada, como foi feita no exemplo. Devido à seqüência: CARTESIAN PRODUCT
seguido de SELECT, ser muito comum para se identificar tuplas relacionadas de duas relações,
uma operação especial JOIN foi criada para especificar esta seqüência como uma única operação. Assim, a operação CARTESIAN PRODUCT é raramente utilizada isoladamente.



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

R: A operação JOIN, denotada por x, é usada para combinar tuplas relacionadas de relações em
uma única tupla. Esta operação é muito importante para quaisquer bases de dados relacionais,
pois permite processar relacionamentos entre relações. Para ilustrar a operação JOIN, suponha
que se deseja recuperar os nomes dos gerentes de cada departamento. Para obter-se o nome
dos gerentes, é necessário combinar cada tupla de departamento com tuplas de empregados
cujo valor NSS seja igual ao valor de SNNGER na tupla departamento. Isto é feito usando a operação JOIN, então projeta-se o resultado sobre aqueles atributos necessários:
55

DEPT_GER¬DEPARTAMENTO xSNNGER=NSS EMPREGADO

RESULT¬pDNOME, SNOME, PNOME (DEPT_GER)


A operação DIVISION é útil para um tipo especial de consulta que ocorre freqüentemente em
aplicações de base de dados. Esta requisição pode ser ilustrada pela seguinte consulta:
“Recupere os nomes dos empregados que trabalham em todos os projetos em que ‘John Smith’ trabalha. Para expressar esta consulta usando DIVISION deve-se fazer o seguinte:
primeiro recuperar a lista de números de projetos em que ‘John Smith’ trabalha em uma relação
intermediária SMITH_PNOS:

SMITH¬s PNOME = ‘John’ AND SNOME = ‘Smith’ (EMPREGADO)

SMITH_PNOS¬p PNRO (TRABALHA_EM * NSSEMP = NSS SMITH)

Depois, criar uma relação que inclua tuplas da forma que lista todos os empregados, cujo número do segura social é NSSEMP, que trabalham num determinado projeto PNRO:

NSS_PNRO¬p PNRO, NSSEMP (TRABALHA_EM)

Finalmente, aplicar a operação DIVISION para as relações obtidas a fim de obter os números dos seguros sociais desejados:

NSS_DESEJADO (NSS)¬NSS_PNRO ¸ SIMTH_PNOS

RESULT¬p PNOME, SNOME (NSS_DESEJADO * EMPREGADO)



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

R: O primeiro tipo de consulta que não pode ser expressa na álgebra relacional é conhecido como
funções agregadas sobre coleções de valores da base de dados. Por exemplo, pode-se querer recuperar a média ou total salarial de todos os empregados ou o número de tuplas de
empregados. As funções normalmente aplicadas para coleções de valores numéricos são:

SUM, AVERAGE, MAXIMUM e MINIMUM. A função de contagem de tuplas é normalmente chamada COUNT. Cada uma destas funções pode ser aplicada a todas as tuplas de uma relação.