Escolar Documentos
Profissional Documentos
Cultura Documentos
Estrutura das Bases de Dados Relacionais" Reduo a tabelas de um Esquema ER" lgebra Relacional" Operaes Estendidas da lgebra Relacional" Modicao da Base de Dados" Vistas"
1!
Estrutura Bsica !
Formalmente, dados os conjuntos D1, D2, . Dn,, uma relao r um
subconjunto de" D1 x D2 x x Dn! Portanto, uma relao um conjunto de tuplos (a1, a2, , an) em que a i D i!
2!
Esquema de Relao !
A1, A2, , An so atributos" R = (A1, A2, , An ) um esquema de relao!
"
"
3!
Instncia de Relao !
Os valores correntes (instncia da relao) de uma relao
tabela"
clientes ! id ! 13123! 43242! 36645! 21313! nome ! Lus Trindade! Pedro Silva! Joana Sobral! Susana Dias! morada ! Rue Central! Rua da Soa! Rua D Maria! Av do Brasil! cidade ! Paris! Coimbra! Coimbra! Lisboa! tuplos" atributos"
4!
Linguagem de Consulta/Interrogao !
Linguagem a que o utilizador recorre para obter informao a
procedimentais" declarativas"
Linguagens Puras:"
5!
lgebra Relacional !
Seis operadores bsicos"
7!
Operao de Seleco !
Notao:
p(r)"
"
"onde p uma frmula do clculo proposicional constituda por termos ligados por: (e), (ou), (no)"
Cada termo da forma:"
"
"<atributo> "op "<atributo> ou <constante>" onde op pode ser: =, , >, . <. "
Exemplo de seleco:
branch-name=Perryridge (account)"
8!
A = B D > 5 (r) !
A !
B !
C ! 1" D ! 7 !
23" 10 !
9!
Operao de Projeco !
Notao:"
A1, A2, , Ak (r) " "onde A1, ..., Ak so nomes de atributos e r uma relao."
O resultado a relao com os k atributos (k colunas) obtidos
relaes so conjuntos"
E.g. eliminar o atributo branch-name de account
10!
B ! 10 ! 20 ! 30 ! 40 !
C ! 1 ! 1 ! 1 ! 2 ! A,C (r)!
C ! 1 ! 1 ! 1 ! 2 !
11!
A !
C ! 1 ! 1 ! 2 !
Operao de Unio !
Notao: r s! Denida como: "
" "
"r s = {t | t r ou t s}"
!1. r, s devem ter a mesma aridade (igual nmero de atributos)" "2. Os domnios dos atributos devem ser compatveis (e.g., os valores da 2 coluna de r so do mesmo tipo dos valores da 2 coluna de s)"
E.g. determinar quais os clientes que tm uma conta ou um
12!
r s:"
rs ! A !
Database System Concepts!
B ! 1 ! 2 ! 1 ! 3 !
13!
"
" r s = {t | t r e t s}""
relaes compatveis."
r e s devem ter a mesma aridade" os domnios dos atributos de r e s devem ser compatveis"
"
14!
r s:" r-s ! A !
B ! 1 ! 1 !
15!
"
"r x s = {t q | t r e q s}"
R S = )."
Se os atributos de r(R) e s(S) no so disjuntos, ento tm que
se utilizar renomeaes."
16!
s ! B ! 1 ! 2 ! C !
D ! 10 ! 13 ! 20 ! 10 ! E ! a ! a ! b ! b !
rxs ! B ! 1 ! 1 ! 1 ! 1 ! 2 ! 2 ! 2 ! 2 ! C !
D ! 10 ! 13 ! 20 ! 10 ! 10 ! 13 ! 20 ! 10 ! E ! a ! a ! b ! b ! a ! a ! b ! b !
17!
Composio de Operaes !
Pode-se construir expresses combinando vrias operaes" Exemplo: A=C(r x s)"
rxs ! A !
B ! 1 ! 1 ! 1 ! 1 ! 2 ! 2 ! 2 ! 2 ! C !
D ! 10 ! 13 ! 20 ! 10 ! 10 ! 13 ! 20 ! 10 ! E ! a ! a ! b ! b ! a ! a ! b ! b ! A !
A=C(r x s) ! B ! 1 ! 1 ! 2 ! C !
D ! 10 ! 13 ! 20 ! E ! a ! a ! b !
18!
Operao de Renomeao !
Permite dar um nome a, e portanto referir, os resultados de
x(E) "
"devolve a expresso E com o nome X"
Se uma expresso de lgebra relacional E tem aridade n, ento"
19!
Exemplo Clnica !
frmacos PK codF nomeF quantidade consultas mdicos PK nEmpr nomeM especialidade PK nConsulta data FK1 nBI FK2 nEmpr pacientes PK nBI nomeP telefone morada idade receitas PK,FK1 codF PK nConsulta
20!
Exemplo Clnica !
mdicos(nEmpr,nomeM,especialidade)! pacientes(nBI,nomeP,telefone,morada,idade)! frmacos(codF,nomeF)! consultas(nConsulta,data,nBI,nEmpr)! receitas(codF,nConsulta,quantidade)!
21!
Exemplo Clnica !
mdicos(nEmpr,nomeM,especialidade)! frmacos(codF,nomeF)! pacientes(nBI,nomeP,telefone,morada,idade)! consultas(nConsulta,data,nBI,nEmpr)! receitas(codF,nConsulta,quantidade)!
mdicos PK nEmpr nomeM especialidade frmacos PK codF nomeF quantidade consultas PK nConsulta data FK1 nBI FK2 nEmpr pacientes PK nBI nomeP telefone morada idade receitas PK,FK1 codF PK nConsulta
22!
Exemplo Clnica !
mdicos(nEmpr,nomeM,especialidade)! frmacos(codF,nomeF)! pacientes(nBI,nomeP,telefone,morada,idade)! consultas(nConsulta,data,nBI,nEmpr)! receitas(codF,nConsulta,quantidade)!
mdicos PK nEmpr nomeM especialidade frmacos PK codF nomeF quantidade consultas PK nConsulta data FK1 nBI FK2 nEmpr pacientes PK nBI nomeP telefone morada idade receitas PK,FK1 codF PK nConsulta
clnica?"
23!
Exemplo Clnica !
mdicos(nEmpr,nomeM,especialidade)! frmacos(codF,nomeF)! pacientes(nBI,nomeP,telefone,morada,idade)! consultas(nConsulta,data,nBI,nEmpr)! receitas(codF,nConsulta,quantidade)!
mdicos PK nEmpr nomeM especialidade frmacos PK codF nomeF quantidade consultas PK nConsulta data FK1 nBI FK2 nEmpr pacientes PK nBI nomeP telefone morada idade receitas PK,FK1 codF PK nConsulta
24!
Exemplo Clnica !
mdicos(nEmpr,nomeM,especialidade)! frmacos(codF,nomeF)! pacientes(nBI,nomeP,telefone,morada,idade)! consultas(nConsulta,data,nBI,nEmpr)! receitas(codF,nConsulta,quantidade)!
mdicos PK nEmpr nomeM especialidade frmacos PK codF nomeF quantidade consultas PK nConsulta data FK1 nBI FK2 nEmpr pacientes PK nBI nomeP telefone morada idade receitas PK,FK1 codF PK nConsulta
Qual a idade do paciente mais velho?" Renomear a relao pacientes como d" A consulta :"
idade(pacientes) " pacientes.idade( " pacientes.idade < d.idade (pacientes x d (pacientes) ) " ) "
Database System Concepts! 25! Silberschatz, Korth and Sudarshan (modicado)!
Exemplo Clnica !
pacientes !
Nome ! Idade !
d(pacientes) !
d.Nome ! d.Idade !
pacientes x d(pacientes) !
Nome ! Idade ! d.Nome ! d.Idade !
30 ! 20 ! 25 !
Ana !
30 ! 20 ! 25 !
Ana !
30 ! 30 ! 30 ! 20 ! 20 ! 20 ! 25 ! 25 ! 25 !
30 ! 20 ! 25 ! 30 ! 20 ! 25 ! 30 ! 20 ! 25 !
Rui ! Carla !
20 ! 20 ! 25 !
30 ! 25 ! 30 !
! pacientes.Idade ( pacientes.Idade < d.Idade Idade (pacientes) Idade (pacientes) Idade ! (pacientes x d(pacientes))) ! pacientes.Idade ( pacientes.Idade < d.Idade 30 ! Idade ! (pacientes x d(pacientes))) ! 20 ! 25 !
Database System Concepts!
20 ! 25 !
26!
Idade !
30 !
Exemplo Clnica !
frmacos receitas PK,FK1 PK codF nConsulta quantidade
PK
codF nomeF
consultas
consultas(nConsulta,data,nBI,nEmpr)! receitas(codF,nConsulta,quantidade)!
PK FK1 FK2
nConsulta data nBI nEmpr pacientes PK nBI nomeP telefone morada idade
27!
Denio Formal !
Uma expresso bsica na lgebra relacional :"
28!