Baixe o app para aproveitar ainda mais
Prévia do material em texto
23/09/2014 1 Unidade III - Álgebra Relacional PUC Minas – Coração Eucarístico Curso Sistemas de Informação Bancos de Dados – Unidade IV Profº. Manoel Palhares Moreira – setembro de 2014 Álgebra Relacional � Consiste em uma linguagem de consulta procedural (ou seja, uma série de comandos, procedimentos). � O resultado da aplicação destes comandos dará sempre como resultado uma nova relação (tabela). Álgebra Relacional � Suas operações são realizadas sempre em uma ou em duas ou mais relações (tabelas). Neste ultimo caso, mesmo que a entrada seja com mais de duas relações, as operações são tomadas sempre duas a duas. Ex.: Realiza-se uma operação envolvendo a Relação1 e a Relação2. O resultado é uma nova Relação e com ela realiza-se outra operação com a Relação3. Álgebra Relacional � Nosso estudo da Álgebra Relacional dar-se-á através de exemplos. Assim sendo, vamos imaginar as tabelas que possuímos em um sistema que gerencia o acervo de uma biblioteca e os empréstimos realizados por seus usuários. Sabe-se que a biblioteca possui quatro tipos de usuários (Aluno, Professor, Funcionário, Visitante) e suas obras estão classificadas em Científicas, Literatura Brasileira, Literatura Estrangeira, Teses e Dissertações. Álgebra Relacional As tabelas deste sistema possuem os seguintes esquemas: Usuário {CodUsu, NomUsu, TipUsu, CodCur, SexUsu} Obra {CodObr, NomObr} TipoUsuário {TipUsu, DesTipUsu} Autor {CodAut, NomAut, CodPai } Autoria {CodAut, NomAut, CodPai} Pais {CodPai, NomPai} Editora {CodEdi, NomEdi} Exemplar {NumExe, CodObr, CodEdi, AnoEdc, ValExe} Empréstimo {NumExe, DatEmp, CodUsu, DatPreDev, DatDev} TipoObra {TipObr, DesTipObr} Álgebra Relacional � Nos esquemas anteriores, você deverá ler o nome de cada coluna sempre de três em três letras. Assim, CodUsu é o Código do Usuário, DatPreDev é a Data Prevista Devolução, CodEdi é o Código da Editora, AndEdc é o Ano de Edição. � Você se habituará ao padrão de nome de dados. Lembre-se que padronizar nomes de dados é facilitar o manuseio deles no ambiente do banco de dados. 23/09/2014 2 Álgebra Relacional � As operações na álgebra relacional dividem-se em fundamentais e não fundamentais � As fundamentais podem ser: � unárias (aplicadas em uma única tabela) - estas operações são: selecionar, projetar e renomear; � binárias (operações que envolvem duas tabelas) - produto cartesiano, união de conjuntos e diferença de conjuntos. Álgebra Relacional � As não fundamentais são utilizadas para simplificar consultas, já que elas englobam operações fundamentais. Álgebra Relacional: Selecionar Seleção/Restrição: serve para extrair (selecionar) linhas (tuplas) de uma certa tabela. Representada pela letra σ (sigma). Ex: Selecionar Exemplares de Obras que possuam código de obra acima de 200. R σ CodObr > 200 (Exemplar) (lê-se: R recebe a seleção em Exemplar de Código Obra maior que 200) Álgebra Relacional: Selecionar R σ CodObr > 200 (Exemplar) O sinal é um sinal de atribuição, ou seja, atribui-se a R o resultado da seleção em Exemplar de Código de Obra maior que 200. Álgebra Relacional: Projetar R σ CodObr > 200 (Exemplar) � Exemplar é uma tabela que possui os dados (NumExe, CodObr, CodEdi, AnoEdc) Então dizemos que a Relação Exemplar é do Grau 4, por que possui 4 colunas. Ou seja, o grau indica o número de colunas de uma tabela (relação). � A coluna NumExe está sublinhada por que é uma coluna chave. � ATENÇÃO: A seleção conserva o Grau da Tabela de origem, ou seja, R é uma relação do grau 4 e possui as colunas (NumExe, CodObr, CodEdi, AnoEdc). Álgebra Relacional: Projetar Projeção: cria uma nova relação (tabela) contendo apenas os atributos especificados na operação de projeção. Representada pela letra pi (pi). R pi NomUsu, SexUsu (Usuario) (lê-se: R recebe a Projeção em Usuário de Nome do Usuário e Sexo do Usuário ) 23/09/2014 3 Álgebra Relacional: Projetar R pi NomUsu, SexUsu (Usuario) � Usuário é uma tabela que possui os dados (CodUsu, NomUsu, TipUsu, CodCur). Como já dito, dizemos que a Relação Usuário é do Grau 4, por que possui 4 colunas. � ATENÇÃO: A projeção impõe o grau à nova relação pelo número de colunas projetadas. No nosso caso, R é uma relação do grau 2 por que possui apenas duas colunas (NomUsu, SexUsu). Álgebra Relacional: Renomear Renomear: A renomeação produz uma relação idêntica à relação de origem (R1, p.e.) mas designada por outro nome (R2) e com atributos em uma nova ordem e com novos nomes. Exemplo R ρ Editoras (Código, Nome) (Editora) Álgebra Relacional: Renomear R ρ Editoras (Código, Nome) (Editora) Lê-se R recebe a renomeação para Editoras com atributos Código e Nome da elação Editora. Lembre-se que a relação Editora possui dois atributos: CodEdi e NomEdi. União, Interseção e Diferença Dado duas relações, R1(A1, A2,..., AN) e R2(B1, B2,..., BM): � Elas são compatíveis para as operações de União, Interseção e Diferença se tiverem o mesmo grau n e se possuírem o mesmo tipo de tuplas, ou seja, se dom(Ai) = dom(Bi) : 1 ≤ i ≤ n (ou seja, domínios iguais correspondentes). � O resultado da (união) R1 ∪ R2 é a uma relação que inclui todas as tuplas que estão em R1 ou em R2. Tuplas em duplicata são eliminadas. União, Interseção e Diferença � O resultado da interseção R1 ∩ R2 é uma relação que inclui todas as tuplas comuns às duas relações, ou seja, tuplas que estão em R1 e estão em R2. � O resultado da diferença R1 − R2 é a uma relação que inclui todas as tuplas que estão em R1 mas não estão em R2. � Como na teoria de conjuntos, a União e Intersecção são comutativas mas a diferença não. União, Interseção e Diferença: exemplos � Suponha duas Relações ObraCOREU {CodObr, NomObr} e ObraBAR {CodObr, NomObr}, referentes às obras existentes no Coração Eucarístico e no Barreiro, respectivamente. � Repare que elas são compatíveis para as operações de União, Interseção e Diferença, pois possuem o mesmo grau e o mesmo tipo de tuplas. 23/09/2014 4 União, Interseção e Diferença: exemplos A união entre estas relações é representada por R ObraCOREU ∪ ObraBAR e corresponde ao conjunto total de obras da Universidade nestas duas unidades. A interseção entre estas relações é representada por R ObraCOREU ∩ ObraBAR e corresponde ao conjunto de obras coincidentes entre as bibliotecas da unidade Coração Eucarístico e a da unidade Barreiro. União, Interseção e Diferença: exemplos � Uma query para responder a questão de quais obras só existem na unidade Coração Eucarístico seria resolvida por R ObraCOREU - ObraBAR e uma para listar as que existem apenas no Barreiro seria R ObraBAR - ObraCOREU � Repare que a diferença não é comutativa. Álgebra Relacional: Produto Cartesiano O Produto Cartesiano gera todas as combinações possíveis entre as tuplas de duas tabelas e é esta operação que nos permite combinar tuplas de diferentes relações. Dizemos que R R1 X R2, ou seja que R recebe o resultado do produto cartesiano entre R1 e R2. Álgebra Relacional: Produto Cartesiano Sejam R1(A1, A2, ...,AN) e R2(B1, B2, ...,BM), então R, resultado do produto cartesiano entre R1 e R2 é uma relação com n+m atributos, R(A1, A2, ...,AN, B1, B2, ..., BM), ou seja uma relação com grau N + M na qual existe uma tupla para cada combinação possível de tuplas de R1 com cada tupla de R2. Álgebra Relacional: Produto Cartesiano � O número de tuplas de R é sempre igual ao número de tuplas de uma relação multiplicado pelo número de tuplas da outra relação. � Se entre R1 e R2 existem atributos com mesmo nome, nos referimos a eles como R1.Ax e R2.Ax Álgebra Relacional: Produto Cartesiano � Sejam as tabelas País e Autor conforme representadas abaixo: � CalculeR Pais X Autor CodPai NomPai 1 Brasil 2 Portugal CodAut NomAut CodPai 1 José de Alencar 1 2 Machado de Assis 1 3 Luís de Camões 2 23/09/2014 5 Álgebra Relacional: Produto Cartesiano � R possui 6 linhas (2 X 3) e é uma relação de grau 5 e possui os atributos (CodPai, NomPai, CodAut, NomAut, CodPai) � R = {1, Brasil, 1, José de Alencar, 1; 1, Brasil, 2, Machado de Assis, 1; 1, Brasil, 3, Luís de Camões, 2; � 2, Portugal, 1, José de Alencar, 1; 2, Portugal, 1, Machado de Assis, 1; 2, Portugal, 1, 3, Luís de Camões, 2} Álgebra Relacional: Produto Cartesiano Sempre: � O número de linhas de um produto cartesiano R1 X R2 é igual à multiplicação do número de linhas de R1 pelo número de linhas de R2 ; � O número de colunas de um produto cartesiano R1 X R2 é igual à soma do número de colunas de R1 com o número de linhas de R2. Álgebra Relacional: Junção � A Junção corresponde à combinação do operador de seleção com o operador produto cartesiano. Ela cria uma nova relação através da seleção por uma condição especificada, no resultado do produto cartesiano. � É representada pelo símbolo é ⋈ � R R1 a⋈b R2, onde a e b são os atributos de Junção. Álgebra Relacional: Junção � A Junção é que nos permite lidar com associações entre relações. � A Junção também é conhecida como Junçãoθ (lê- se Junção Theta) onde θ pode ser qualquer operador de seleção. � Quando θ é um símbolo de igualdade (=) temos a equijunção, que é a mis utilizada forma de junção. Álgebra Relacional: Junção � A Junção, como o Produto Cartesiano, possui grau formado pela soma dos atributos das relações que a formam. � Assim, uma operação de Junção com uma relação R1 de grau 4 com uma relação R2 de grau 3, resultará em uma relação R de grau 7. Álgebra Relacional: Junção � Quando temos atributos de junção de mesmo nome, não indicamos estes atributos e a Junção tem um nome especial: Junção Natural. Além disso, o atributo de mesmo nome só aparece uma vez na relação R final. Então na Junção Natural o grau da relação final é sempre a soma dos graus das duas relações menos um. � R R1 ⋈ R2 23/09/2014 6 Álgebra Relacional: Junção � Atenção: Uma junção natural entre duas relações que não possuam atributos de mesmo nome equivale a um produto cartesiano, pois não há como executar a seleção. � Lembre-se que é possível renomear (ρ) colunas para possibilitar Junções Naturais. Álgebra Relacional: Junção � A junção é sempre uma operação binária. Uma junção de três relações é igual a junção de duas relações e o resultado junção com a terceira. � R ((R1 a⋈b R2) ⋈c R3) Álgebra Relacional: Junção � A junção, como o Produto Cartesiano, possui grau formado pela soma dos atributos das relações que a formam. � Assim, uma operação de junção com uma relação R1 de grau 4 com uma relação R2 de grau 3, resultará em uma relação R de grau 7. Álgebra Relacional: Junção � Exemplo: Listar pela álgebra relacional o Nome do País e o Nome do Autor. � R1 Pais ⋈ Autor � R piNomPai, NomAut (R1) � Observe que o grau de R1 é 4 (soma dos graus menos um, pois é junção natural). O Grau de R é 2, apenas duas colunas projetadas. Álgebra Relacional: Junção Externa � A Junção só recupera linhas que satisfaçam a condição de Junção. Entretanto, muitas vezes precisamos resuperar linhas externas à Junção, ou seja, as que não satisfazem a condição de Junção. � Os símbolos utilizados para Junção externa são: e respectivamente significam, Junção Externa à esquerda, Junção Externa à direita e Junção Externa total. Álgebra Relacional: Junção Externa � A junção externa à direita, traz as linhas da tabela que se encontram à direita do símbolo de Junção que satisfaçam ou não a condição de Junção. � Exemplo: Listar todos os Nomes de País e para aqueles que possuem, listar o nome dos autores. � R1 País Autor R piNomPai, NomAut(R1) 23/09/2014 7 Álgebra Relacional: Junção Externa � Se a tabela Pais estivesse à direita do símbolo de Join, utilizaríamos a Junção Externa à Direita, para solucionar o mesmo pedido. � R1 Autor País R piNomPai, NomAut(R1) Álgebra Relacional: Divisão Divisão ÷ � A divisão de duas relações R1 ÷ R2, onde se verifica que os atributos(R2) ⊆ atributos(R1), tem como resultado uma relação R cujo conjunto de atributos é igual a diferença de atributos de R1 pelos atributos de R2 e onde para cada tupla t que aparece no resultado, os valores de t devem aparecer em R1 combinados com cada tupla de R2. Álgebra Relacional: Divisão Exemplo R R1 ÷ R2 R1A H a1 h1 a2 h1 a3 h1 a4 h1 a2 h2 a2 h4 a3 h4 a4 h4 a3 h3 a4 h4 R2 A a1 a2 a3 R h1 h4 � A divisão é utilizada para consultas do tipo ‘para todos’. Para realizá-la é preciso preparar as relações. � Exemplo: Listar o Código e o Nome das Editoras que já editaram todas as obras de Machado de Assis. Álgebra Relacional: Divisão � Para resolver a questão, vamos preparar as relações para uma operação de divisão, criando uma relação com os códigos de obras de Machado de Assis, o código e o nome das editoras. E uma outra relação com o código de todas as obras de Machado de Assis. Depois dividimos a primeira pela segunda. Álgebra Relacional: Divisão R1 ← σNomAut = 'Machado de Assis' (Autor) / selecionando o autor Machado de Assis R2 ← pi CodObr (Autoria ⋈ R1) / Código da obras de Machado de Assis R3 ← pi CodObr, NumExe (Exemplar ⋈ R2) / código da Obra e Num exemplar de todos os exemplares das obras de Machado de Assis R4 ← pi CodEdi, NomEdi, CodObr ( Editora ⋈ R3) / código da Editora, Nome da Editora e código da Obra de todos os exemplares das obras de Machado de Assis R ← R4 ÷ R2 / O resultado é uma relação contendo o Código e Nome das editoras de todas as obras de Machado de Assis Álgebra Relacional: Divisão 23/09/2014 8 Referências Bibliográficas NAVATHE, Shamkant B., ELSMARI, Ramez. Sistemas de Banco de dados. 5ª ed. São Paulo: Pearson Addison Wesley, 2005, caps. 5 e 6. NAVATHE, Shamkant B., ELSMARI, Ramez. Sistemas de Banco de dados. 6 ed. São Paulo: Pearson Addison Wesley, 2011, caps. 3 e 6. SILBERSCHATZ, A; KORTH, H. F.; SUDARSHAN, S. Sistema de bancos de dados. 5 ed. São Paulo: Campus Elsevier, 2006, cap. 2. SILBERSCHATZ, A; KORTH, H. F.; SUDARSHAN, S. Sistema de bancos de dados. São Paulo: Campus Elsevier, 2006 , cap. 2.
Compartilhar