Aula 09 Álgebra relacional Leonardo dos Santos Araujo [email protected] Índice Conceitos; Operadores: Operadores da álgebra original: Seleção; Projeção; União; Interseção; Diferença; Produto cartesiano; Junção; Divisão. Conceitos é uma linguagem de consulta procedural [01]; consiste em um conjunto de operações tendo como entrada uma ou duas relações e produzindo, como resultado, uma nova relação. [01]; é uma coleção de operadores que tomam relações como seus operandos e retomam uma relação como seu resultado [02]; Operadores Podem ser classificados como [02]: Operadores de conjuntos tradicionais: união, interseção, diferença e produto cartesiano; Operadores relacionais especiais: seleção, projeção, junção e divisão. Esses 8 operadores acima são os operadores da álgebra original. Outros operadores úteis surgiram com o tempo e foram sendo incorporados ao conjunto original [02]. Operadores - Seleção Seleciona tuplas que satisfaçam um determinado predicado [01]; Usamos a letra grega minúscula sigma (σ) para denotar seleção [01]; O predicado aparece subscrito a σ [01]; O argumento da relação é dado entre parênteses, seguindo o σ [01]; É um operador unário; Tuplas duplicadas são eliminadas [01]. Operadores - Seleção Exemplo: identificador nome cidade 01 Neuma Maria Medeiros Florêncio Currais Novos 02 Mariana Regina Soares dos Santos Santa Cruz 03 Magnum Rocha Currais Novos 04 Gilvandelma Marques de Lima Currais Novos 05 Aparecida Lopes de Medeiros Santa Cruz 06 Sarah Raquel da R. Silva Currais Novos Figura 01: tabela Alunos de um banco de dados. σ cidade = “Santa Cruz” (Alunos) Operadores - Seleção Exemplo: identificador nome cidade 02 Mariana Regina Soares dos Santos Santa Cruz 05 Aparecida Lopes de Medeiros Santa Cruz Figura 02: resultado da operação de seleção. Operadores - Projeção A operação Projeção retorna o argumento da relação, deixando de lado certos atributos [01]; Usamos a letra grega minúscula pi (π) para denotar projeção [01]; O predicado aparece subscrito a π [01]; O argumento da relação é dado entre parênteses, seguindo o π [01]; É um operador unário; Tuplas duplicadas são eliminadas [01]. Operadores - Projeção Exemplo: identificador nome cidade 01 Neuma Maria Medeiros Florêncio Currais Novos 02 Mariana Regina Soares dos Santos Santa Cruz 03 Magnum Rocha Currais Novos 04 Gilvandelma Marques de Lima Currais Novos 05 Aparecida Lopes de Medeiros Santa Cruz 06 Sarah Raquel da R. Silva Currais Novos Figura 03: tabela Alunos de um banco de dados. π identificador, nome (Alunos) Operadores - Projeção Exemplo: identificador nome 01 Neuma Maria Medeiros Florêncio 02 Mariana Regina Soares dos Santos 03 Magnum Rocha 04 Gilvandelma Marques de Lima 05 Aparecida Lopes de Medeiros 06 Sarah Raquel da R. Silva Figura 04: resultado da operação de projeção. Operadores - União A operação União retorna um conjunto com a união dos dois conjuntos; Usamos o símbolo (U) para denotar união [01]; O operador U aparece entre os dois conjuntos [01]; É um operador binário; Tuplas duplicadas são eliminadas [01]. Operadores - União Exemplo: identificador nome cidade 01 Neuma Maria Medeiros Florêncio Currais Novos 02 Mariana Regina Soares dos Santos Santa Cruz 03 Magnum Rocha Currais Novos 04 Gilvandelma Marques de Lima Currais Novos 05 Aparecida Lopes de Medeiros Santa Cruz 06 Sarah Raquel da R. Silva Currais Novos Figura 05: tabela Alunos de um banco de dados. Operadores - União Exemplo: identificador nome cidade 01 Isanio Lopes Araujo Santos Natal 02 Leonardo dos Santos Araujo Natal 03 Bruno Cruz de Oliveira Natal Figura 06: tabela Professores de um banco de dados. π nome (Alunos) U π nome (Professores) Operadores - União Exemplo: nome Neuma Maria Medeiros Florêncio Mariana Regina Soares dos Santos Magnum Rocha Gilvandelma Marques de Lima Aparecida Lopes de Medeiros Sarah Raquel da R. Silva Isanio Lopes Araujo Santos Leonardo dos Santos Araujo Bruno Cruz de Oliveira Figura 07: resultado da operação de união. Operadores - Interseção A operação Interseção retorna um conjunto com a interseção dos dois conjuntos; Usamos o símbolo (∩) para denotar união [01]; O operador ∩ aparece entre os dois conjuntos [01]; É um operador binário; Tuplas duplicadas são eliminadas [01]. Operadores - Interseção Exemplo: identificador nome nucleo 01 José Diego Saraiva Santa Cruz 02 Leonardo dos Santos Araujo Santa Cruz 03 Bruno Cruz de Oliveira Santa Cruz 04 Gilbran Silva de Andrade Santa Cruz 05 José Diego Saraiva Nova Cruz 06 Bruno Cruz de Oliveira Nova Cruz 07 Gilbran Silva de Andrade Nova Cruz 08 Bartira Paraguaçu Falcão Dantas Rocha Nova Cruz Figura 08: tabela dos professores que ministram aula na UERN. Operadores - Interseção Exemplo: π nome (σ cidade = “Santa Cruz” (Professores) ) ∩ π nome (σ cidade = “Nova Cruz” (Professores) ) Operadores - Interseção Exemplo: nome José Diego Saraiva Bruno Cruz de Oliveira Gilbran Silva de Andrade Figura 09: resultado da operação de interseção. Operadores - Diferença A operação Diferença retorna um conjunto com a Diferença entre dois conjuntos; Usamos o símbolo (-) para denotar diferença [01]; O operador - aparece entre os dois conjuntos [01]; Para este operador é importante lembrar que a ordem é importante entre os operandos; É um operador binário; Tuplas duplicadas são eliminadas [01]. Operadores - Diferença Exemplo: identificador nome nucleo 01 José Diego Saraiva Santa Cruz 02 Leonardo dos Santos Araujo Santa Cruz 03 Bruno Cruz de Oliveira Santa Cruz 04 Gilbran Silva de Andrade Santa Cruz 05 José Diego Saraiva Nova Cruz 06 Bruno Cruz de Oliveira Nova Cruz 07 Gilbran Silva de Andrade Nova Cruz 08 Bartira Paraguaçu Falcão Dantas Rocha Nova Cruz Figura 10: tabela dos professores que ministram aula na UERN. Operadores - Diferença Exemplo: π nome (σ cidade = “Santa Cruz” (Professores) ) π nome (σ cidade = “Nova Cruz” (Professores) ) Operadores - Diferença Exemplo: nome Leonardo dos Santos Araujo Figura 11: resultado da operação de diferença entre dois conjuntos. Operadores - Diferença Exemplo com a troca dos operandos: π nome (σ cidade = “Nova Cruz” (Professores) ) π nome (σ cidade = “Santa Cruz” (Professores) ) Operadores - Diferença Exemplo com a troca dos operandos: nome Bartira Paraguaçu Falcão Dantas Rocha Figura 12: resultado da operação de diferença entre dois conjuntos. Operadores - Produto cartesiano A operação Produto cartesiano permite-nos combinar duas relações quaisquer [01]; Usamos o símbolo (x) para representar o produto cartesiano [01]; O operador x aparece entre os dois conjuntos; É um operador binário; Tuplas duplicadas são eliminadas [01]. Operadores - Produto cartesiano Exemplo: identificador nome cidade 01 Neuma Maria Medeiros Florêncio Currais Novos 02 Mariana Regina Soares dos Santos Santa Cruz 03 Magnum Rocha Currais Novos Figura 13: tabela Alunos de um banco de dados. identificador nome cidade 01 Isanio Lopes Araujo Santos Natal 02 Leonardo dos Santos Araujo Natal 03 Bruno Cruz de Oliveira Natal Figura 14: tabela Professores de um banco de dados. Operadores - Produto cartesiano Exemplo: π alunos.nome (Alunos) x π professores.nome (Professores) Operadores - Produto cartesiano Exemplo: alunos.nome professores.nome Neuma Maria Medeiros Florêncio Isanio Lopes Araujo Santos Neuma Maria Medeiros Florêncio Leonardo dos Santos Araujo Neuma Maria Medeiros Florêncio Bruno Cruz de Oliveira Mariana Regina Soares dos Santos Isanio Lopes Araujo Santos Mariana Regina Soares dos Santos Leonardo dos Santos Araujo Mariana Regina Soares dos Santos Bruno Cruz de Oliveira Magnum Rocha Isanio Lopes Araujo Santos Magnum Rocha Leonardo dos Santos Araujo Magnum Rocha Bruno Cruz de Oliveira Figura 15: resultado da operação de produto cartesiano. Operadores - Junção Existem diversas variedades da operação de junção. Porém, de longe a mais importante é a chamada junção natural [02]; A operação Junção é utilizada para unir relações, assim como o Produto cartesiano. A Junção Natural (mais comum) realiza a união em relações que apresentam atributos com mesmo nome e valores iguais; Usamos o símbolo ( ) para representar a junção [01]; O operador aparece entre os dois conjuntos [01]; É um operador binário; Tuplas duplicadas são eliminadas [01]. Operadores - Junção Exemplo: id_professor nome_professor id_curso 02 Leonardo dos Santos Araujo 02 03 Bruno Cruz de Oliveira 02 04 Bruno Cruz de Oliveira 03 Figura 16: tabela Professores de um banco de dados. id_curso nome_curso nucleo 01 Ciência da Computação Natal 02 Ciência da Computação Santa Cruz 03 Ciência da Computação Nova Cruz Figura 17: tabela Cursos de um banco de dados. Operadores - Junção Exemplo: Professores id_professor nome_professor id_curso Cursos nome_curso nucleo 02 Leonardo... 02 Ciência da Computação Santa Cruz 03 Bruno Cruz... 02 Ciência da Computação Santa Cruz 04 Bruno Cruz... 03 Ciência da Computação Nova Cruz Figura 18: resultado da operação de junção. Operadores - Divisão A operação Divisão é usada nas consultas nas quais se emprega a frase “para todos” [01]; Usamos o símbolo (÷) para representar a divisão [01]; O operador ÷ aparece entre os dois conjuntos; Para este operador é importante lembrar que a ordem é importante entre os operandos; É um operador binário; Tuplas duplicadas são eliminadas [01]. Operadores - Divisão Exemplo: identificador nome nucleo 01 José Diego Saraiva Santa Cruz 02 Leonardo dos Santos Araujo Santa Cruz 03 Bruno Cruz de Oliveira Santa Cruz 04 Gilbran Silva de Andrade Santa Cruz 05 José Diego Saraiva Nova Cruz 06 Bruno Cruz de Oliveira Nova Cruz 07 Gilbran Silva de Andrade Nova Cruz 08 Bartira Paraguaçu Falcão Dantas Rocha Nova Cruz Figura 19: tabela Professores que ministram aula na UERN. Operadores - Divisão Exemplo: identificador nucleo 01 Nova Cruz 02 Santa Cruz Figura 20: tabela Interiores de um banco de dados. π nome, nucleo (Professores) ÷ π nucleo (Interiores) Operadores - Divisão Exemplo: nome José Diego Saraiva Bruno Cruz de Oliveira Gilbran Silva de Andrade Figura 18: resultado da operação de divisão. Referências [01] KORTH H. F., SILBERSCHATZ A. & SUDARSHAN S. Sistema de Banco de Dados. Editora Makron Books, 3ª Edição, 1999. [02] DATE, C. J. Introdução a Sistemas de Banco de Dados. Editora Elsevier, Tradução da 8ª Edição americana, 2004.