Baixe o app para aproveitar ainda mais
Prévia do material em texto
REVISÃO RÁPIDA DE ÁLGEBRA RELACIONAL APLICADA A BANCO DE DADOS Sobre o autor: Meu nome é Neilton e sou estudante de Análise e Desenvolvilmento de Sistemas no Instituto Federal da Bahia e Concluinte do curso de Técnico em Informática no Senai/CIMATEC (ao contrário do que parece o curso é de desenvolvimento de software). Até pouco fazia apostilas de cunho puramente pessoal para reforçar meus estudos e fontes de pesquisa posteriores, mas com o incentivo da rede colaborativa ‘passeidireto’ pretendo compartilhar com vocês o que já produzi e o que produzirei. obs: Peço desculpas pelos erros pontuais peço que sejam sinalizados e buscarei solucioná-los da melhor forma possível Olá pessoal, Trago hoje esta pequena revisão de álgebra relacional aplicada na disciplina de BANCO DE DADOS. Existem 9 relações aplicadas ao banco de dados sendo 4 delas diretamente relacionadas a teoria de conjuntos da matemática e outras 4 relacionadas a modelos computacionais, vejamos abaixo: CONJUNTOS COMPUTACIONAIS UNIÃO SELEÇÃO INTERSEÇÃO PROJEÇÃO DIFERENÇA JUNÇÃO PRODUTO DIVISÃO A nona relação é aplicado apenas aos modelos relacionais e é o Assignment que não está descrito nessa rápida revisão Como sabem ou imaginam cada uma dessas relações tem uma simbologia para “simplificar” a leitura do que deve ser feito CONJUNTOS COMPUTACIONAIS UNIÃO = ‘ ’∪ SELEÇÃO = ‘σ’ INTERSEÇÃO = ‘∩’ PROJEÇÃO = ‘ ’ DIFERENÇA = ‘-’ JUNÇÃO = ‘ ’ PRODUTO = ‘×’ DIVISÃO = ‘÷’ Operação Seleção Seleciona um subconjunto de tuplas a fim de satisfazer a condição determinada σgols >= 10 (GOLS_MARCADOS) Isso pode ser lido da seguinte forma: Selecione o conteúdo do resultado em uma relação de gols maior ou igual a 10 que estão na tabela GOLS_MARCADOS Em leitura geral seria mais ou menos assim: Selecione o conteúdo do resultado em uma relação de sua relação que estão na tabela SUA_TABELA Operação Projeção Eu gosto de dizer, a grosso modo, que projeção é uma seleção elaborada, no entanto seu comportamento é um pouco diferente, então vejamos abaixo: Este símbolo deve ser lido como relação!! NOME, GOLS (TIME) Temos a sua leitura como: Ao resultado atribua o(s) valor(es) uma relação de NOME, GOLS que estão na tabela TIME Em uma leitura geral seria: Ao resultado atribua o(s) valor(es) uma relação de SEU_CAMPO, OUTRO_CAMPO que estão em uma tabela SUA_TABELA Operação União Assim como nos conjuntos a união junta tudo, contudo as duplicatas serão ignoradas. ELENCO <- ATORES ATRIZES∪ Isso pode ser lido como: Ao elenco atribua a UNIÃO entre a ATORES e ATRIZES ATORES ATRIZES JOÃO MARIA PAULO PAULA CARLOS SILVIA TIAGO ROSA ELENCO ELENCO JOÃO PAULO CARLOS TIAGO MARIA PAULA SILVIA ROSA Operação Interseção Semelhante a união a interseção se comportará da mesma forma que na teoria de conjuntos vejamos abaixo. RESULTADO<- LISTA_ANTIGA ∩ LISTA_NOVA Ao resultado atribua o que tem na tabela LISTA_ANTIGA com o que tem na tabela LISTA_NOVA De forma mais geral pode ser lida como Ao NOME_DA_SUA_TABELA_RESULTADO atribua os campos que estão interseccionados na SUA_LISTA_1 e SUA_LISTA_2 LISTA_ANTIGA LISTA_NOVA JOÃO JOÃO PAULO CARLA CARLOS MARIA MARIA ROSA RESULTADO RESULTADO JOÃO MARIA Operação de Subtração: Assim como as duas anteriores funcionará da mesma forma que nas relações de conjunto De forma geral será lido como SUA_TABELA1 menos SUA_TABELA2 T1 T2 A B B C E D Ou seja buscamos saber o que T1 tem que T2 não tem então obteremos T1 - T2 A E Operação de Produto Cartesiano: O produto cartesiano equivale a multiplicação das tabelas onde: TOTAL_LINHAS = LINHAS DA TABELA1 + LINHAS DA TABELA2 TOTAL_COLUNAS = COLUNAS DA TABELA1 × COLUNAS DA TABELA2 Os campos serão preenchidos relacionando seus conteudos de forma distributiva conforme o exemplo: T1 T2 A C B D E Caso não se recorde de como funciona o uso de distributiva leia: http://mundoeducacao.bol.uol.com.br/matematica/utilizando-propriedade-distributiva-na-resolucao-equacoes.htm T1 × T2 AC AD AE BC BD BE Operação de Junção: Nesta operação temos 6 subgrupos de junção: Junção Theta, Equijunção, Junção Natural, Anti-junção* e Semi-junção* e Junções externas que por sua vez possuem 3 tipos distintos Junção Theta É a forma mais genérica da junção que aceita qualquer expressão lógica Carro Barco CarroModelo PreçoCarro BarcoModelo PreçoBarco CarroA 20,000 Barco1 10,000 CarroB 30,000 Barco2 40,000 CarroC 50,000 Barco3 60,000 *Não serão aqui abordados Carro Barco PreçoCarro >= PreçoBarco Pode ser lido: Faça uma Junção de e Barco onde PreçoCarro for maior ou igual ao PreçoBarco CarroModelo PreçoCarro BarcoModelo PreçoBarco CarroA 20,000 Barco1 10,000 CarroB 30,000 Barco1 10,000 CarroC 50,000 Barco1 10,000 CarroC 50,000 Barco2 40,000 Equijunção Embarque (codFornec),(codFornec) Fornecedor Representa em uma tabela embarque faça a junção (que vai funcionar como associação) do codF (de embarque), codF que está em Fornecedor Imagem 1: No acima exemplo foi feito Junção theta Imagem 2: Enquanto neste utilizou-se Equijunção Junção Natural Nos casos onde os campos possuam o mesmo nome podemos simplificar seu uso a partir da junção natural expresso da seguinte maneira Embarque Fornecedor Que pode ser lido como junção da tabela Embarque com a tabela Fornecedor O resultado é idêntico a imagem 2 em Equijunção. Junção Externa (Outer Join) Os 3 casos de Junção externa são o ‘left outer join( ⟕ )’, ‘right outer join( )’ e ‘full outer join (⟖ )’ que fazem a junção, respectivamente, dos campos à esquerda do indicado, à direita e de ambos lados. O seu comportamento será similar as junções já exemplificadas. Empregado Nome IdEmp DeptNome Harry 3415 Finanças Sally 2241 Vendas George 3401 Finanças Harriet 2202 Vendas Tim 1123 Executivo Departamento DeptNome Gerente Vendas Harriet Produção Charles Empregado ⟕ Departamento Nome IdEmp DeptNome Gerente Harry 3415 Finanças NULL Sally 2241 Vendas Harriet George 3401 Finanças NULL Harriet 2202 Vendas Harriet Tim 1123 Executivo NULL A tabela Empregado é retornada com os registros coincidentes em departamento caso não haja correspondencia seram retornados campos NULL ‘right outer join( )’ ⟖ irá funcionar da mesma forma, mudando apenas o lado de execução enquanto o ‘full outer join ( )’ retornará todos os registros de ambas tabelas Junção Interna (Inner Join): Esse é um formato comum de join, que retorna dados apenas quando as duas tabelas tem chaves correspondentes TabelaA.Chave = TabelaB.Chave Operação de Divisão: A divisão em álgebra relacional pode parecer confusa a primeira vista, no entanto, com um pouco de atenção é possível compreendê-la rapidamente. A tabela resultante é obtida verificando o que há na primeira e não há na segunda (a subtração entre as tabelas) além de sua concatenação com cada linha apareça na segunda tabela. Vejamos o exemplo a seguir para entender como isso funciona: T1 T2 ax x ay y bx Campo1 de T1 ÷ Campo1 de T2, ou seja, ax ÷ x = a Campo1 de T1 ÷ Campo2 de T2, ou seja, ax ÷ y = NÃO É POSSÍVEL CALCULAR Campo2 de T1 ÷ Campo2 de T2, ou seja, ay ÷ y = a Campo2 de T1 ÷ Campo1 de T2, ou seja, ay ÷ x = NÃO É POSSÍVEL CALCULAR Campo3 de T1 ÷ Campo1 de T2, ou seja, bx ÷ x = b Campo3 de T1 ÷ Campo2 de T2 ou seja, bx ÷ y = NÃO É POSSÍVEL CALCULAR Neste caso o único valor que possui os valores de T2 é o ‘a’ que será o único campo de T1÷T2 T1 ÷ T2 a Referências: http://www.devmedia.com.br/algebra-relacional-parte-i/2663 Apostila: Álgebra Relacional. Zaupa, Aglaê Pereira. Disponível em <https://www.passeidireto.com/arquivo/3015040/algebra-relacional> https://pt.wikipedia.org/wiki/%C3%81lgebra_relacionalhttp://pt.stackoverflow.com/questions/6441/qual-%C3%A9-a-diferen %C3%A7a-entre-inner-join-e-outer-join
Compartilhar