Você está na página 1de 22

Escola Superior de Tecnologia

LEI e LTIM Instituto Politécnico de Castelo Branco


Bases de Dados II
Carga Horária T TP P Seminário Projecto
Semanal 2 3

DISCIPLINA: Bases de Dados II

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).

Nota: as componentes exigem uma nota mínima de 9 valores.


_________________________________________________________________
4 - Recursos
Sistema de Gestão de Bases de Dados (Oracle)
Http Server (Apache)
Programação (PHP)
________________________________________________________________________
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II

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 de Consulta Relacionais


●Lingagens de Consulta: Permitem a manipulação e a obtenção de
dados de uma base de dados.
●O modelo relacional suporta LC simples e poderosas
●Com uma forte base formal baseada na lógica.
●Permite a optimização de queries.
●Linguagens de consulta != linguagens programação!
●As LC’s não são completas (não têm ciclos).
●As LC´s não são utilizadas para cálculos complexos.
●As LC’s suportam um acesso eficiente e simples a conjuntos de
dados grandes.
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.)

 A compreensão da Algebra & Calculo é a chave para


 compreenão do processamento de queries em SQL!
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II

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

União, Intersecção, Diferença de


conjunto
●Todas estas operações têm duas
relações de entrada, que têm que mid mnome grau idade
ser union-compatible: 22 João 7 45.0
●Mesmo número de campos. 31 N uno 8 55.5
●Os campos correspondentes 58 José 10 35.0
têm o mesmo tipo. 44 Pedro 5 35.0
●Qual o esquema do resultado? 28 M ário 9 35.0
S1∪ S2
mi
d m
no
meg
ra
u i
dade
M
idm
no
meg
r
aui
dad
e
3
1N u
no 8 55.
5
2
2Jo
ão 7 4
5.0
5
8J o
sé 1
0 35.
0
S1− S2 S1∩ S2
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

Exemplos da Divisão A/B


sno pno pno pno pno
s1 p1 p2 p2 p1
s1 p2 p4 p2
B1
s1 p3 p4
B2
s1 p4
s2 p1 sno
B3
s2 p2 s1
s3 p2 s2 sno
s4 p2 s3 s1 sno
s4 p4 s4 s4 s1

A A/B1 A/B2 A/B3


Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II

Expressar A/B usando Op. Básicos


●A Divisão não é uma operação essencial;mas ajuda.
●(Também verdade para junções, mas são tão comuns que os
sistemas implementam-nas de forma especial.)
●Ideia: Para A/B, calcula todos os valores x que não são
desqualificados por algum valor y em B.
●o valor x é desqualificado se, adicionarmos um valor y de B, se
obtém um tuplo xy que não está em A.

Valores x desqualificados: π x ((π x ( A) × B) − A)


A/B: π x ( A) − Todos tuplos “desqualificados”
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II

Encontre os nomes dos marinheiros que


reservaram o barco #103
●Solução 1: π mname((σ Re servas) Marinheiros)
bid =103
 Solução 2: ρ (Temp1,σ Re servas)
bid =103

ρ (Temp2,Temp1 Marinheiros )
π mnome(Temp2)

 Solução 3: π mnome(σ bid =103(Re servas Marinheiros))


Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II

Encontre os nomes dos marinheiros que tenham


reservado um barco vermelho
●A informação sobre as cores está na relação Barcos; logo,
precisamos de uma junção extra:

π mnome((σ Barco) Re servas Marinheiros)


cor ='vermelho'

 Uma solução mais eficiente:

π mnome(π ((π σ Barco) Re servas) Marinh)


mid bid cor ='vermelho'

 O ‘query optimizer’pode correr a 2ª dada a 1ª query !


Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II

Encontre os marinheiros que tenham reservado


um barco vermelho ou verde

●Pode-se identificar todos os barcos vermelhos ou verdes, e


depois encontrar os marinheiros que reservaram algum destes
barcos:
ρ (Tempbarco,(σ Barco))
cor ='vermelho'∨cor ='verde'
π mnome(Tempbarco Re servas Marinheiros)
 Pode também definir Temp barcos usando união!(como?)
 O que acontece se ∨ for substit. por ∧ nesta query?
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II

Encontre os marinheiros que reservaram um barco


vermelho e um barco verde
●A aproximação prévia não resulta! É preciso identificar os
marinheiros que reservaram vermelhos, marinheiros que
reservaram verdes, e depois achar a intersecção (atenção mid é
chave de Marinheiros):

ρ (Tempvermelho,π ((σ Barco) Rservas))


mid cor ='vermelho'
ρ (Tempverde,π ((σ Barco) Rservas))
mid cor ='verde'
π mnome((Tempvermelho∩Tempverde) Marinheiros)
Escola Superior de Tecnologia
LEI e LTIM Instituto Politécnico de Castelo Branco
Bases de Dados II

Encontre os nomes de marinheiros que tenham


reservado todos os barcos
●Usa a divisão; os esquemas das relações de entrada para a /
devem ser escolhidas com cuidado:

ρ (Tempmids,(π Re servas)/(π Barco))


mid ,bid bid
π mnome(Tempmids Marinheiros)
 Para encontrar os marinheiros que reservaram o “Interlago”:

.....
/π (σ Barco)
bid bnome ='Interlago'