Álgebra RelacionalÁlgebra RelacionalÁlgebra RelacionalÁlgebra Relacional
Prof. Tales CabralProf. Tales [email protected]
Colégio da ImaculadaColégio da ImaculadaCurso Técnico em InformáticaCurso Técnico em Informática
2º Módulo2º Módulo
Slide nº 2 de 12
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)
Slide nº 3 de 12
Á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)
Slide nº 4 de 12
Intersecção (): relação3 = (relação1 relação2)
=
Diferença (): relação3 = (relação1 relação2)
=
Slide nº 5 de 12
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.
=
Slide nº 6 de 12
Seleção (): relação2 = <condição> (relação1)
A=A1 =
Projeção (): relação2 = <lista_atributos> (relação1)
A,C =
Slide nº 7 de 12
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.
=
Também chamada de “Junção Natural”
Slide nº 8 de 12
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.
=
Slide nº 9 de 12
Exemplo
P1num_p nome_p pontuacao idade
22 Mark Weber 78 3031 Sebastian Vettel 78 2258 Fernando Alonso 75 35
P2num_p nome_p pontuacao idade
28 Felipe Massa 61 2831 Sebastian Vettel 78 2244 Lewis Hamilton 59 2458 Fernando Alonso 75 35
R1num_p posicao data
22 1 10/1/201058 3 20/2/2010
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:
nome_p, pontuacao (P2) = ?
idade (P2) = ?
pontuacao>70 (P2) = ?
Slide nº 10 de 12
ConclusãoPortanto, á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.
Slide nº 11 de 12
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!
Slide nº 12 de 12
Questões
1. Quais os pacientes com mais de 50 anos de idade?
idade > 50 (pacientes)2. Quais os nomes dos pacientes com mais de 50 anos de idade?
nomeP (idade > 50 (pacientes))3. Quais os fármacos que já foram receitados em consultas da
clínica?
nomeF((receitas.codF = fármacos.codF(receitas x fármacos)))
4. Quais os fármacos que nunca foram receitados?
nomeF(fármacos) –
nomeF(receitas.codF = fármacos.codF(receitas x fármacos)))