130 likes | 264 Views
Colégio da Imaculada Curso Técnico em Informática. Álgebra Relacional. Prof. Tales Cabral talescabral@colegiodaimaculada.com.br. 2º Módulo. Introdução. A Álgebra Relacional é uma forma de cálculo sobre conjuntos ou relações. (Wikipedia) É uma linguagem de consulta em tabelas relacionais.
E N D
Colégio da ImaculadaCurso Técnico em Informática Álgebra Relacional Prof. Tales Cabral talescabral@colegiodaimaculada.com.br 2º Módulo
Introdução A Álgebra Relacional é uma forma de cálculo sobre conjuntos ou relações. (Wikipedia) É uma linguagem de consulta em tabelas relacionais. (Database Management Systems/2003) A Álgebra Relacional é uma linguagem de consulta formal, porém procedimental, ou seja, o usuário fornece as instruções ao sistema para que o mesmo realize uma seqüência de operações na base de dados para calcular o resultado desejado. (Ricardo Rezende – SQL Magazine) A forma de trabalho na linguagem é pegar uma ou mais tabelas (conforme necessidade) como entrada de dados e produzir uma nova tabela como resultado das operações. (Ricardo Rezende – SQL Magazine)
Álgebra Relacional • Atua sobre conjuntos (tabelas) e devolve como resultado: conjuntos (tabelas). • Teoria de conjuntos (união, intersecção, diferença, produto cartesiano). • Outros operadores (seleção, projeção, junção e divisão). • União (): relação3 = (relação1 relação2)
Intersecção ():relação3 = (relação1 relação2) = Diferença ():relação3 = (relação1 relação2) =
Produto Cartesiano ():relação3 = (relação1 relação2) • A relação final corresponde à “soma” dos esquemas das relações iniciais. • Os registos resultantes correspondem à combinação dos registos da relação1 com os registos da relação2. • A cardinalidade da relação resultante corresponde à multiplicação das cardinalidades das duas relações iniciais. • =
Seleção ():relação2 = <condição> (relação1) • A=A1= • Projeção ():relação2 = <lista_atributos> (relação1) • A,C=
Também chamada de “Junção Natural” • Junção (): relação3 = (relação1 relação2) • Combina os registos provenientes das duas relações, com atributos comuns, numa só relação. • O esquema da relação final corresponde consiste na soma dos esquemas das relações iniciais. • A relação final contém um registo por cada combinação de registos das duas relações que possuam valores iguais nos atributos comuns. • =
Divisão ():relação3 = (relação1 relação2) • As relações iniciais devem ser compatíveis para a divisão (r1 r2). • Os atributos da relação final são os atributos da relação1 que não existem na relação2. • Os registos que existem na relação final são os registos que existem na relação1 combinados com os registos da relação2. • =
Exemplo Estas instâncias serão utilizadas para consultas a seguir, representando: P1 – relação de pilotos 1 P2 – relação de pilotos 2 R1 – relação de reservas Descrever e dar a relação resultante: pnome_p, pontuacao (P2) = ? pidade (P2) = ? spontuacao>70 (P2) = ?
Conclusão Portanto, álgebra relacional é uma linguagem de consulta procedural e formal (não de programação) que consiste em um conjunto de operações que tem como entrada uma ou mais relações e retorna, como saída, uma nova relação. Contudo, para isso, a álgebra relacional dispõe dos operadores para produzir suas relações. Sendo assim, basta que as tabelas estejam criadas e organizadas para que se possa aplicar os operadores sobre as relações e obter os resultados esperados. Vale lembrar que a álgebra relacional serve como padrão para compreensão de um estudo posterior de SQL sobre bancos de dados.
Exercício Base de Dados: médicos(nEmpr,nomeM,especialidade) pacientes(nBI,nomeP,telefone,morada,idade) fármacos(codF,nomeF) consultas(nConsulta,data,nBI,nEmpr) receitas(codF,nConsulta,quantidade) Fazer as questões do slide seguinte!
Questões 1. Quais os pacientes com mais de 50 anos de idade? sidade> 50 (pacientes) 2. Quais os nomes dos pacientes com mais de 50 anos de idade? pnomeP (sidade > 50 (pacientes)) 3. Quais os fármacos que já foram receitados em consultas da clínica? pnomeF((sreceitas.codF = fármacos.codF(receitas x fármacos))) 4. Quais os fármacos que nunca foram receitados? pnomeF(fármacos) – pnomeF(sreceitas.codF = fármacos.codF(receitas x fármacos)))