Escolar Documentos
Profissional Documentos
Cultura Documentos
3º Ano / 1º Semestre
Docente: Filipe Fidalgo
_______________________________________________________________________
1- Conteúdos programáticos
•Introdução
•Álgebra Relacional
•Triggers e Stored Procedures, Functions, Packadges
•Estruturas em Índice
•Arquitecturas Tecnologicas
•Sistemas de Suporte à Decisão
2 - Bibliografia
•Ramakrishnan, Raghu: Database Management, McGraw-Hill
•Date, C.J.: An Introduction to Database Systems, Addison-Wesley
•Elmasri and Navathe: Fundamentals of Database Systems, Addison-Wesley
•Campos, Luis Moreno; Oracle8i Curso Completo, FCA Editora
•Pereira, J.L.: Tecnologias de Bases de Dados, FCA Editora
•Damas, Luis: SQL Structured Query Language, FCA Editora
•Serrão, C. and Marques, J.: Programação com PHP4, FCA Editora
•Cortes, Bruno: Sistemas de Suporte à Decisão, FCA Editora
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
_________________________________________________________________
3 – Avaliação
Parte Teórica:
1 Exame ou Frequência (50% da nota final da cadeira).
Parte Prática:
1 Trabalhos Indivíduais (10% da nota final da cadeira).
1 Trabalho de Implementação (40% da nota final da cadeira).
Algebra Relacional
Bases de Dados II
Filipe Fidalgo
ffidalgo@est.ipcb.pt
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
Linguagens Relacionais de
Consulta Formais
Duas linguagens de consulta matemáticas são a base das
linguagens “reais” (e.g. SQL), e para a implementação:
Algebra Relacional: Mais operacional, muito util para a
representação dos planos de execução.
Calculo Relacional: Permite que os utilizadores
descrevam o que querem, em vez de como se calcula.
(Não-operacional, declarativa.)
Preliminares
●Uma query é aplicada a uma instancia de relação, e o resultado
de uma query é também uma instância de relação.
●Esquemas de relação de entrada para uma query são fixas
(mas a query corre independentemente da instância!)
●O esquema para o resultado de uma dada query também é
fixo! Determinado pela definição da linguagem de consulta.
●Notação de campos com nome vs. posicional:
●A notação posicional é mais fácil para definições formais, os
nomes de campos são mais amigáveis.
●Ambas usadas no SQL
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
Instâncias Exemplo
m
R1idb
id data
●Relações “Marinheiros” e 22 1
011 0/1
0 /9
6
“Reservas” utilizadas para os 58 1
031 1/1
2 /9
6
nossos exemplos. S1 midnome grau idade
●Vamos utilizar a notação de
nomes de campo, assumindo que
22 João 7 45.0
os nomes dos campos das 31 N uno 8 55.5
instâncias resultado são herdados 58 José 10 35.0
dos nomes das instâncias de
entrada das queries. S2 mid nom e grau idade
28 M ário 9 35.0
31 N uno 8 55.5
44 Pedro 5 35.0
58 José 10 35.0
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
Algebra Relacional
●Operações básicas:
●Selecção ( σ) Selec. um subconjunto de linhas da relação.
●Projecção ( π ) Apaga colunas indesejadas da relação.
×
●Produto-Cruzado ( ) Permite-nos combinar 2 relações.
−
●diferença de conjunto ( ) Tuplos da rel. 1, mas não da rel. 2.
●União ( ) Tuplos da rel. 1 and rel. 2.
●Operações adicionais:
●Intersecção, junção, divisão, renomeação: Não é essencial, mas é
(muito!) util.
●Como cada operação devolve uma relação, as operações podem ser
compostas! (a algebra é “fechada”.)
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
Projeção
●Apaga os atributos que não estão na Nome grau
projection list. Mário 9
●O Esquema do resultado contêm Nuno 8
exactamente os campos da lista de Pedro 5
projecção, com os mesmos nomes que José 10
tinham na relação (única) de entrada.
●O operador Projecção têm que π nome, grau (S 2)
eliminar duplicados! (Porquê??)
● Nota: os sistemas reais não fazem idade
eliminação de duplicados a não ser que isso 3 5 .0
seja pedido explicitamente pelo utilizador.
(Porque não?) 5 5 .5
π (S 2)
idade
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
Seleção
mi
d m
no
m eg
ra
u i
da d
e
●Selecciona as linhas que 2
8M ár
io9 35.0
satisfazem a condição de selecção. 5
8J o
sé 10 35.0
●Não há duplicados no resultado!
(Porquê?)
σ grau > 8(S 2)
●O esquema do resultado é idêntico
ao esquema da (única) relação de
entrada.
●A relação Resultado pode ser o mn ome grau
input para outra operação de
álgebra relacional! (Composição
Mário 9
de operadores.) José 10
π mnome, grau (σ grau > 8(S 2))
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
Produto-Cruzado
●Cada linha de S1 é associada com cada linha de R1.
●O esquema resultado tem um campo por cada campo de S1e R1, os
nomes dos campos são herdados, se possível.
●Conflito: S1 and R1 têm um campo chamado mid.
(m
id
) Mnomeg
rau id
a d
e (m
id)b
idd
ata
22 Jo
ão 7 45.0 22 1
011
0/10
/96
22 Jo
ão 7 45.0 58 1
031
1/12
/96
31 Nuno 8 55.5 22 1
011
0/10
/96
31 Nuno 8 55.5 58 1
031
1/12
/96
58 Jo
sé 10 35.0 22 1
011
0/10
/96
58 Jo
sé 10 35.0 58 1
031
1/12
/96
Renaming operator: ρ(C(1→ mid1,5 → mid 2),S1× R1)
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
Junções
● Junção de Condição : R c S = σ c ( R × S)
(mid) mnome grau idad (mid) bid data
e
22 João 7 45.0 58 103 11/12/96
31 Nuno 8 55.5 58 103 11/12/96
S1 R1
S1.mid < R1.mid
●O esquema resultado é o mesmo que o do produto-cruzado.
●Menos tuplos que o produto-cruzado, pode ser capaz de ser mais
eficiente.
●Também chamada junção-theta.
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
Junções
●Equi-Junção: Um caso especial de condição de junção (c), que contém
apenas igualdades.
m
i
d s
n
amer
at
i
nga
gebi
d d
a
y
2
2Jo
ão7 4 5.
0 1
0
1 1
0
/1
0
/9
6
5
8Jo
sé10 35.
0 1
0
3 1
1
/1
2
/9
6
S1 R1
sid
●O Esquema resultado é semelhante ao do produto-cruzado, mas apenas
com uma cópia dos campos para os quais a igualdade é especificada..
●Junção natural: Equi-junção em todos os campos comuns.
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
Divisão
●Não suportado como um operador primitivo, mas util para expressar
queries do tipo:
Encontre os marinheiros que reservaram todos os barcos.
●Tendo A 2 campos, x e y; tendo B apenas o campo y:
●A/B = { x | ∃ x, y ∈ A ∀ y ∈ B}
●i.e., A/B contêm todos as tuplos x (marinheiros) tal que para
qualquer tuplo y (barco) em B, existe um tuplo xy em A.
●Ou: Se o conjunto dos valores y (barcos) associados a um valor x
(marinheiro) em A contém todos os valores y em B, o valor x está
em A/B.
●Em geral, x e y podem ser qq lista de campos; y é a lista de campos
de B, e x y é a lista de campos de A.
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II
ρ (Temp2,Temp1 Marinheiros )
π mnome(Temp2)
.....
/π (σ Barco)
bid bnome ='Interlago'