Baixe o app para aproveitar ainda mais
Prévia do material em texto
Álgebra Relacional Álgebra relacional, é uma coleção de operações utilizadas para manipular relações. Essas operações são usadas para selecionar tuplas de uma determinada relação ou para combinar tuplas relacionadas a diversas relações com o propósito de especificar uma consulta - uma requisição de recuperação - sobre a base de dados. 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. Operações SELECT e PROJECT O Operador SELECT A operação SELECT é usada para selecionar um subconjunto de tuplas de uma relação as quais devem satisfazer uma condição de seleção. Em geral, a operação SELECT é denotada por: σ <condição de seleção> (<nome da relação>) 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 <nome da relação>. A expressão booleana especificada em <condição de seleção> é construída a partir de cláusulas da forma: <nome de atributo> <operador de comparação> <valor constante>, ou <nome de atributo> <operador de comparação> <nome de atributo> Onde <nome de atributo> é o nome de um atributo da relação, <operador de comparação> é normalmente um dos operadores relacionais {=,<,>, ...} <valor constante> é um valor constante. As cláusulas podem ser utilizadas em conjunto com os operadores lógicos {AND, OR NOT} para formar uma condição de seleção composta. Funcionarios código Nome Idade Sexo Departamento Salario 13001 Alberto Francisco 34 M 1 7000 13002 Luana Artur 28 F 2 7000 13003 Juliana Borba 41 F 2 5000 13004 Guilherme Santos 31 M 1 7000 13005 Fernando Augusto 35 M 2 5000 13006 Pinto Raimundo 28 M 1 4000 Ex1: Para selecionar funcionarios que trabalham no departamento 2: σ Departamento = 2 (Funcionarios) código Nome Idade Sexo Departamento Salario 13003 Juliana Borba 41 F 2 5000 13002 Luana Artur 28 F 2 7000 13005 Fernando Augusto 35 M 2 5000 Ex2: Para selecionar funcionarios que tenham idade maior que 30 e tenham salario maior que 5000, ou que tenham idade menor que 30 e tenham salario menor que 5000. σ (Idade > 30 AND salario>5000) OR (Idade < 30 AND salario < 5000) (Funcionarios) código Nome Idade Sexo Departamento Salario 13001 Alberto Francisco 34 M 1 7000 13004 Guilherme Santos 31 M 1 7000 13006 Pinto Raimundo 28 M 1 4000 O operador SELECT é unário; isto é, ele é aplicado somente a uma relação. Assim, o SELECT não pode ser usado para selecionar tuplas de mais de uma relação. Observe 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. Note que o operador SELECT é comutativo; isto é, σ <cond1> (σ <cond2> (R))= σ<cond2> (σ<cond1> (R)) Assim, uma seqüência de SELECTs pode ser aplicada em qualquer ordem. Além disso, podese sempre trocar operadores SELECT em cascata com a conjuntiva AND; isto é: σ <cond1> (σ <cond2> (...(σ <condn> (R))...))= σ <cond1> AND <cond2> AND ... AND <condn>(R). O Operador PROJECT O operador PROJECT, seleciona certas colunas da tabela se existir interesse sobre certos atributos da relação. A forma geral do operador PROJECT é: π <lista de atributos> (<nome da relação>) onde π é o símbolo usado para representar o operador PROJECT e <lista de atributos> é uma lista de atributos da relação especificada por <nome da relação>. A relação resultante tem apenas os atributos especificados em <lista de atributos> e estes atributos aparecem na mesma ordem em que foram especificados. Assim, o grau é igual ao número de atributos em <lista de atributos>. Se a lista de atributos não contem atributos chaves, então é provável que tuplas duplicadas apareçam no resultado. A operação PROJECT remove implicitamente quaisquer tuplas duplicadas, tal que o resultado da operação PROJECT seja um conjunto de tuplas e assim, uma relação válida. Por exemplo, considere a seguinte operação: π Sexo, Salario (Funcionarios) Sexo Salario M 7000 F 7000 F 5000 M 5000 M 4000 A tupla <F, 2500> aparece apenas uma vez, mesmo que esta combinação de valores apareça duas vezes na relação Funcionarios. Dessa maneira, se duas ou mais tuplas idênticas aparecerem quando aplicada a operação PROJECT, apenas uma será mantida no resultado; isto é conhecido como eliminação de duplicidade e é necessário para assegurar que o resultado da operação também seja uma relação – um conjunto de tuplas. O número de tuplas na relação resultante sempre será igual ou menor que a quantidade de tuplas na relação original. Note-se que:π <lista1> (π <lista2> (R)) = π <lista1> (R) caso <lista2> contenha os atributos de <lista1>; caso contrário, o lado esquerdo da igualdade acima estará incorreto. A comutatividade não é válida para PROJECT. Sequência de Operações As relações resultants não possuem nomes. Em geral, existe a necessidade de se aplicar várias operações da álgebra relacional uma após a outra. Pode-se escrever essas operações em apenas uma única expressão da álgebra relacional ou aplicar uma única operação por vez e criar relações intermediárias. Neste último caso, deve-se dar nomes às relações intermediárias. Ex: para selecionar nome, idade salario de todos funcionarios que trabalham no departamento 1, isso pode ser feito aplicando os operadores SELECT e PROJECT. π Nome,Idade,Salario (σ Departamento=1 (Funcionarios)) Alternativamente, pode-se explicitar a sequência de operações, dando um nome para cada relação intermediária: DEP1_FUNC ← σ Departamento=1 (Funcionarios) RESULT ← π Nome, Idade,Salario (DEP1_FUNC) DEPT1_FUNC código Nome Idade Sexo Departamento Salario 13001 Alberto Francisco 34 M 1 7000 13004 Guilherme Santos 31 M 1 7000 13006 Pinto Raimundo 28 M 1 4000 RESULT Nome Idade Salario Alberto Francisco 34 7000 Guilherme Santos 31 7000 Pinto Raimundo 28 4000 Renomeando Atributos Normalmente, é mais simples dividir uma sequência de operações especificando as relações intermediárias ao invés de escrever uma única expressão da álgebra relacional. Pode-se, também, utilizar a técnica de renomear atributos nas relações intermediárias. Para renomear atributos de uma relação, que resultou da aplicação de uma operação da álgebra relacional, basta listar os nomes dos atributos entre parênteses: DEP1_FUNC ← σ Departamento=1 (Funcionarios) RESULT(NovoNome, NovaIdade, NovoSalario) ← π Nome, Idade, Salario (DEP1_FUNC) Operações da Teoria dos Conjuntos 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 DIFFERENCE. 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. Para conseguir isso, as duas relações aplicadas a qualquer uma das três operações acima devem ter o mesmo tipo de tuplas; esta condição é chamada união compatível. Duas relações R(A1, A2, ..., An) e S(B1, B2,....Bn) são união compatível se elas tiverem o mesmo grau n, e dom(Ai)=dom(Bi) para 1 ≤ i ≤ n. Isso significa que as duas relações têm o mesmo número de atributos e que cada par de atributos correspondentes tem o mesmo domínio. Pode-sedefinir 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. 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.
Compartilhar