Buscar

IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 02

Prévia do material em texto

Aula 02
Álgebra relacional
Nesta aula, você irá: 
Conceituar álgebra relacional.
Conhecer as operações da álgebra relacional.
Utilizar operadores de conjunto.
Escrever expressões utilizando operadores de tabelas.
Analisar expressões de á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;
Chave primária: conjunto de atributos que identificam univocamente cada tupla da relação;
Chave extrangeira: atributo de uma relação que é chave primária de outra relação.
Álgebra relacional
A álgebra relacional é uma coleção de operações canônicas que são utilizadas para manipular as relações. 
Essas operações são utilizadas para selecionar tuplas de relações individuais e para combinar tuplas relacionadas de relações diferentes, para especificar uma consulta em um determinado banco de dados. 
O resultado de cada operação é uma nova relação, que também pode ser manipulada pela álgebra relacional.
As principais operações da álgebra relacional são:
Seleção
Projeção
Produto Cartesiano
Junção
Operações de Conjunto : (União, Intersecção, Diferença)
Divisão 
Operação de seleção
A operação de SELEÇÃO, representada pela letra grega sigma (σ), é aplicada sobre apenas uma relação visando selecionar um subconjunto de tuplas (com todos os seus atributos). 
 
 A forma geral de uma operação de Seleção é:
�
Onde: 
- <condição de seleção> é a condição que a linha deve atender para ser selecionada e 
 
- <nome da relação> é o nome da relação sobre a qual será aplicada a operação de Seleção
 
A relação resultante da operação tem os mesmos atributos da relação especificada em <nome da relação>.
EXEMPLO:
Dada a relação dos empregados da empresa selecionar aqueles que trabalham no departamento 10 e que ganhem salario > 1500.
�
A expressão que atende ao pedido é:
�
�
Operação de Projeção
A operação de PROJEÇÃO, representada pela letra grega pi (∏), é aplicada sobre apenas uma relação de visando projetar os atributos de uma relação de acordo com uma lista de atributos oferecida.
Os atributos são exibidos na mesma ordem que aparecem na lista. 
 
A operação Projeção seleciona um conjunto determinado de colunas de uma relação.
A forma geral da operação de  PROJEÇÃO é:
�
 
Onde:
<lista de atributos> representa a lista de atributos que o usuário deseja selecionar e 
- <nome da relação> representa a relação sobre a qual a operação projeção será aplicada.
�
EXEMPLO
Dada a relação de empregados da empresa, projetar as colunas ID, NOME E SALARIO:
�
A expressão que atende ao pedido é:
�
�
Sequencialidade de Operações
A Projeção e a Seleção podem ser combinadas, de forma que apenas algumas linhas e algumas colunas retornem na operação.
A forma geral de uma operação sequencializada é:
 
π<lista de atributos> (σ <condição de seleção> (<nome da relação>))
EXEMPLO:
Dada a relação de empregados da empresa, projetar as colunas ID, NOME E SALARIO PARA OS EMPREGADOS DO DEPARTAMENTO 10:
�
A expressão que atende ao pedido é:
π Id,Nome, Salario (σ Id_Depto = 10 (Empregado))
�
Realizada em Dois Passos
Passo 1 - Seleção
�
Passos 2 - Projeção
�
�
Essa ordem de execução: primeiro a Seleção e depois a Projeção, funciona em todos os casos.
Observe que se tentarmos realizar primeiro, a Projeção, segundo, a seguinte expressão:
 
(σ Id_Depto = 10 (π Id, Nome, Salario (Empregado))
Iriamos obter como resultado intermediário a seguinte tabela:
�
Onde não teríamos a coluna Id_depto para realizarmos a Seleção.
Então, podemos afirmar que nunca podemos inverter?
Na verdade, podemos inverter a ordem quando a Projeção contempla todas as colunas utilizadas na seleção.
Vejamos um exemplo:
Dada a relação dos empregados da empresa projetar as colunas Id, Nome , Salário e Departamento para os empregados que trabalham no departamento 10  e que ganhem salário >= 1500.
�
Observando tabela, notamos que, dos empregados das cinco colunas da tabela, desejamos projetar quatro e apenas os empregados de ID 101 trabalham no departamento 10 e possuem salário maior ou igual a 1500.
�
As expressões  algébrica que realizam a operação são:
(σ Id_Depto = 10 E Salario >= 1500 (π Id, Nome, Salario, Id_Depto (Empregado))
Notamos que estamos realizando primeiro a  Projeção, gerando a seguinte tabela:
�
Observe que estão disponíveis na tabela intermediária as colunas salário e Id_depto que nos permite fazer a Seleção das tuplas de ID 101 e 104 as únicas que atendem a condição de Salário >=1500 e Id_depto = 10
Analisando a Expressão:
π Id, Nome, Salário, Id_Depto (σ Id_Depto = 10 E Salario >= 1500 (Empregado))
 
Notamos que estamos realizando primeiro a Seleção gerando a seguinte tabela:
�
A seguir basta Projetarmos as colunas ID, NOME, SALÁRIO E ID_DEPTO
Essas duas expressões produzem o mesmo resultado, na tabela abaixo e são equivalentes.
�
Operação Produto Cartesiano
O produto cartesiano é uma operação binária que combina todas as tuplas de duas tabelas.
�
A forma geral do Produto Cartesiano é:
A X B
 Onde:
X representa a operação de produto cartesiano
A e B representam as relações sobre as quais a operação será aplicada.
Vejamos um exemplo da operação de Produto Cartesiano:
Observemos as tabelas Região e Departamento.
A tabela de Departamento possui 3 coluna e 4 linhas e a tabela Região possui duas colunas e 3 linhas.
Se desejássemos realizar o produto cartesiano entre elas qual seria expressão algébrica e qual resultado obteríamos?
�
A operação ira justapor as colunas e combinar todas as linhas.
�
Operação Junção
A operação junção atua de forma similar á operação produto cartesiano, porém, a tabela resultante conterá apenas as combinações das tuplas que se relacionam de acordo com uma determinada condição de junção. 
 
A forma geral da operação junção entre duas tabelas A e B é a seguinte:
A  <condição de junção> B
Onde: <condição de junção> é uma expressão relacional, normalmente utilizando o operador =, que determina qual coluna da tabela A deve ser comparada com qual coluna da tabela B.
Observação: Normalmente, as colunas envolvidas na condição de junção são a Chave Primária de uma tabela e a Chave Estrangeira na outra. 
�
Vejamos um exemplo da operação de Junção:
Observemos as tabelas Região e Departamento.
A tabela de Departamento possui 3 coluna e 4 linhas e a tabela Região possui duas colunas e 3 linhas.
Se desejássemos realizar a Junção entre elas qual seria expressão algébrica e qual resultado obteríamos?
Departamento Id_Regiao = Id Região
�
�
Operações de Conjunto
Levando em consideração que as relações podem ser tratadas como conjuntos, podemos então aplicar um conjunto de operações matemáticas sobre as mesmas. 
Essas operações são: união (∪) , intersecção (∩) e diferença (-). 
Esse conjunto de operações não é unário, elas se aplicam a duas relações que obedecem à "compatibilidade de união".
Operações
União
Interseção
Diferença
Redundância de Tuplas
Compatibilidade quanto a união
1. União
O resultado desta operação entre duas relações consiste no conjunto de todas as linhas das duas relações 
A operação de União gera resultados sem redundância de tuplas
A forma geral da operação junção entre duas tabelas A e B é a seguinte:
A U B
A Operação de União é comutativa ou seja A U B produz o mesmo resultado de B U A
�
Vejamos um exemplo da operação de União:
Observemos a tabela Empregado e a tabela Acionista. ( figura1)
Desejamos saber as pessoas que são OU Empregadas OU Acionistas da Empresa.Queremos, então, todos aqueles que aparecem ou no conjunto de Empregado ou no Conjunto de Acionista ou nos Dois. Realizaríamos, portanto, uma União.
Empregado U Acionista
�
\
Analisando a Tabela Resultante do comando ( figura2) podemos notar que:
No resultado aparecem todas as linhas de Empregado e todas a linhas de Acionista.
A linha redundante ( 102 Pedro Leitão) aparece apenas uma;
Os nomes das colunas correspondem aos nomes das colunas da tabela que aparece a esquerda na expressão no caso a tabela Empregado.
2. Interseção
O resultado desta operação entre duas relações consiste no conjunto de todas as linhas que existem em comum nas duas relações 
A operação de Interseção gera resultados sem redundância de tuplas
A forma geral da operação Interseção entre duas tabelas A e B é a seguinte:
A ∩ B
A Operação de Interseção é comutativa ou seja A ∩ B produz o mesmo resultado de B ∩ A
�
Vejamos um exemplo da operação de Interseção:
Observemos a tabela Empregado e a tabela Acionista (figura 3).
Desejamos saber as pessoas que são Empregadas E Acionistas da Empresa.
Queremos, portanto, todos aqueles que aparecem conjunto de Empregado E no Conjunto de Acionista, ou seja, os que aparecem nos Dois conjuntos. Realizaríamos, portanto, uma Interseção.
�
A expressão que realiza a Interseção é:
Acionista ∩ Empregado
Analisando a Tabela Resultante do comando ( Figura 4) podemos notar que:
No resultado aparece apenas a linha 102 Pedro Leitão que é comum a duas tabelas.
Como esta linha é redundante aparece apenas uma vez
Os nomes das colunas correspondem aos nomes das colunas da tabela que aparece a esquerda na expressão.
Repare que em relação ao resultado que vimos no exemplo de União, agora o nome das colunas correspondem as colunas de Acionista pois esta tabela aparece a Esquerda na expressão.
�
3. Diferença
O resultado desta operação entre duas relações consiste no conjunto de todas as linhas que existem em uma tabela e não existe na outra
A operação de Diferença gera resultados sem redundância de tuplas
A forma geral da operação Diferença entre duas tabelas A e B é a seguinte:
A - B
A Operação de Diferença não é comutativa ou seja A - B produz um resultado diferente de B - A
�
Vejamos um exemplo da operação de Diferença:
Observemos a tabela Empregado e a tabela Acionista (Figura 5).
Desejamos saber as pessoas que são Empregadas E NÃO são Acionistas da Empresa.
Queremos, portanto, todos aqueles que aparecem conjunto de Empregado E NÃO aparecem no Conjunto de Acionista. Realizaríamos, portanto, uma Diferença.
�
�
ou
�
4. Tabela Temporária
Em consultas complexas pode ser interessante criar tabelas temporárias a partir de uma operação algébrica visando seu uso posterior vejamos um exemplo: 
Considere a tabela departamento (Figura 8 a) 
�
desejamos criar uma tabela temporária denominada T1 com o ID e NOME dos departamentos da Regiao 1, poderíamos obtê-la então atribuindo a saída 
da expressão relacional, utilizando o operador = , a uma tabela. 
A expressão seria então:
�
Observe o resultado na Tabela T1 (Figura 8 b).
�
5. Operações de Conjuntos a partir de Consultas 
Todos os exemplos que vimos até agora em Operações de Conjunto atuaram sobre conjuntos de linhas que correspondiam a tabelas existentes. Vejamos um exemplo diferente onde os conjuntos serão gerados a partir da operação de projeção e seleção 
Observemos a tabela Empregado (Figura 9).
�
Desejamos saber o ID e o nome dos empregados que são do departamento 10 ou que ganham salário maior ou igual a 1500,00.
Apesar de podermos resolver esta situação apenas com projeção e seleção, conforme já vimos anteriormente, em alguns casos pode ser mais interessante operar com conjuntos.
Como faríamos então?
Inicialmente projetaríamos o ID e NOME dos empregados do departamento 10 a atribuiríamos a uma tabela temporária usando a expressão:
�
A tabela resultante T1 ( Figura 10) teria então três linhas:
�
A seguir projetaríamos o ID e NOME dos empregados com salario maior ou igual a 1500,00 e atribuiríamos a uma tabela temporária usando a expressão:
�
A tabela resultante T2 (Figura 11) teria então três linhas:
Finalmente faríamos a União das tabelas temporárias usando a expressão:
T1 U T2
Analisando a Tabela Resultante (Figura 12) do comando podemos notar que:
No resultado aparecem todas as linhas de T1e todas a linhas de T2.
As linha redundantes ( 101 Carlos Antunes e 104 Marco Aurélio ) aparecem apenas uma vez
Os nomes das colunas correspondem aos nomes das colunas da tabela que aparece a esquerda na expressão no caso a tabela T1.
O mesmo tipo de raciocínio poderia ser aplicado as operações de Interseção e Diferença.
Divisão
É 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. É utilizada para consultas do tipo todos os eleitores que participaram de todas as votações, os sócios que pagaram todas as mensalidades e outras do mesmo tipo.
A representação da operação de divisão entre as relações A e B  é A / B
Vejamos um exemplo
Considere as tabelas Funcionário, Projeto e Funcionario_Projeto
A tabela Funcionário_Projeto faz a associação entre os Projetos e os Empregados. 
Vamos supor que desejamos saber o ID dos  Funcionários que Trabalham em todos os Projetos.
Qual seria a expressão que realizaria a operação desejada e qual resultado obteríamos?
�
�
�
�
Inicialmente, teríamos que projetar o ID dos projetos a partir da expressão,
T1 = π Id_Proj(Projeto)
gerando a tabela T1 ( figura abaixo).
�
A seguir, faríamos a divisão  de Funcionário_Projeto por T1 com a expressão 
Funcionario_Projeto  / T1
 
Analisando a Tabela Resultante do comando, podemos notar que:
no resultado, aparece apenas a coluna ID_FUNC, que é a coluna que existe na tabela funcionário_projeto, que não existe em T1; 
a divisão é realizada, comparando-se todas as linhas de funcionário_projeto com as linhas de T1 e retornando o valor de ID_FUNC, que se relaciona com TODOS os valores de ID_PROJ em T1;
como temos 3 valores de ID_PROJ em T1 (11,12,13), ao realizarmos a divisão irá retornar o valor de ID_FUNC que se associe aos três valores;
analisando Funcionário_Projeto, notamos que o Funcionário 101 está associado aos três projetos, portanto ele faz parte do conjunto resposta;
de forma contrária, o funcionário 102 está associado APENAS aos projetos 12 e 13, não retornando na divisão.
�
Nesta aula, você: 
Aprendeu a respeito da álgebra relacional.
Compreendeu as principais operações da álgebra relacional.
Construiu expressões de álgebra relacional.
Registro de Participação
1. A operação de álgebra relacional que seleciona as colunas de uma tabela é a:
 1) Seleção. 
 2) Projeção. 
 3) Junção. 
 4) União. 
 5) Interseção. 
 
2. Quando queremos produzir, como resultado de uma consulta, um conjuntos de dados que é junção de dois conjuntos de dados de mesmo tipos, usamos a:
 1) Junção. 
 2) Intersecção. 
 3) Seleção. 
 4) Produto Cartesiano. 
 5) União. 
 
3. É um exemplo de operação unária:
 1) Junção. 
 2) Seleção. 
 3) União. 
 4) Diferença. 
 5) Interseção. 
 
4. Quando queremos produzir uma tabela a partir outras duas, combinando apenas as tuplas que se relacionam, devemos fazer uma:
 1) Projeção. 
 2) Junção. 
 3) Seleção. 
 4) Interseção. 
 5) Diferença. 
 
5. A operação que nos permite recuperar informações do tipo: os jogadores que participaram de todos os torneios, é a: 
 1) Junção. 
 2) Seleção. 
 3) União. 
 4) Diferença. 
 5) Divisão. 
 
IMPLEMENTAÇÃO DE BANCO DE DADOS� PAGE �36�
IMPLEMENTAÇÃO DE BANCO DE DADOS � PAGE �35�

Continue navegando