Professional Documents
Culture Documents
LTSI/2
Universidade da Beira Interior, Departamento de Informática
Hugo Pedro Proença, 2010/2011
Sistema Gestor de Bases de Dados
Requisitos Fundamentais de um SGBD:
Segurança.
Integridade.
Controlo da Concorrência
Tolerância a Falhas
Devido à potencial importância dos dados armazenados numa base de
dados, é essencial a implementação de mecanismos de tolerância a
falhas (hardware / software), que garantam a reposição da informação
para um estado anterior válido. Para tal são utilizados basicamente dois
mecanismos:
Backups: Implementação de cópias de segurança com estados
válidos da base de dados
Registos de actividade (Logging). Registo de todas as operações
efectuadas sobre a base de dados. Pode facilitar a identificação
de origens de problemas e evitar que se voltem a repetir
Transacções
O exemplo típico ilustrativo da necessidade de implementar
transacções é o da transferência de dinheiro entre duas entidades
“A” e “B”.
Imagine-se que o cliente “A” efectuou uma compra de 1000
euros à empresa “B”, sendo necessário respectivamente debitar e
creditar este valor nas correspondentes contas.
Em primeiro lugar, é debitado o valor na conta de “A”, passando este a
apresentar saldo (X-1000).
Imagine-se agora a ocorrência de uma qualquer situação excepcional
que interrompe a aplicação que está a manipular a informação, e a
quantia não é creditada na conta de “B”.
Nesta situação, a informação da base de dados fica corrompida,
sem que haja uma forma imediata de percepção da falha.
Transacções
Este exemplo demonstra que existem situações em que é
necessário garantir que, de entre um conjunto de operações,
ou são executadas todas ou nenhuma delas o será,
permanecendo em qualquer dos casos a base de dados num
estado consistente.
Uma Transacção é, então, um conjunto de operações
efectuadas sobre a base de dados, perfeitamente delimitado
em que garantidamente são executadas todas as instruções
ou então nenhuma o será. Begin Transaction
Operação 1
Operação 2
...
Operação n
End Transaction
Transacções
Por definição, uma transacção deve exibir algumas características
fundamentais (Propriedades ACID):
Atomicidade (Atomicity)
Cliente 1 Cliente 2
Encomenda 1 Produto 1
Cliente 2
BD Encomenda 2 Produto 2
Cliente 1
Produto 3
Encomenda 3
Produto 4
Modelo Relacional
Contrariamente aos modelos hierárquicos e de rede, o modelo relacional
não evoluiu a partir de técnicas de processamento de ficheiros. Foi
desenvolvido a partir de estudos teóricos, tendo por base a teoria dos
conjuntos.
Notação:
Entidades Relações
Modelo Entidade/Relacionamento
Exemplo: n
Nota
Obtém n
Aluno Refere
Notações: 1
Entidades escritas no singular Disciplina
Letra inicial das entidades maiúscula.
Verbo das relações ilustrativo.
Modelo Relacional
A estrutura fundamental do modelo relacional é a
“relação”.
Dada uma colecção de conjuntos D1, D2, ..., Dn, R é uma
relação naqueles conjuntos se for constituída por um
conjunto de n-uplos ordenados <d1, d2, ..., dn> tais
que d1 Є D1, d2 Є D2, ..., dn Є Dn.
D1, D2, ..., Dn constituem o domínio da relação.
O número de tuplos <d1, d2, ..., dn> existente define a
cardinalidade da relação.
O número de elementos de cada tuplo determina o
grau da relação.
Modelo Relacional
Na prática uma relação é uma estrutura de dados
bidimensional (tabela), constituída por um conjunto de
instâncias (linhas, zero ou mais) e um conjunto de atributos
(colunas, um ou mais).
A B C
a b c Relacionamento
Horizontal
d e f
Tuplo
Modelo Relacional
O valor de cada atributo num tuplo é obrigatoriamente atómico. Isto
significa que em cada par (linha, coluna) só pode existir um único
valor.
Os atributos de uma relação devem ter identificadores distintos. Na
prática significa que não podem existir duas colunas com nomes
identificadores iguais.
Os tuplos de uma relação devem ser distintos. Numa relação não
podem existir dois tuplos cujos respectivos atributos sejam
completamente iguais.
A ordem dos tuplos numa relação, bem como a ordem dos atributos
num tuplo não tem qualquer significado.
Todos os valores passíveis de preencher um atributo de um dado
tuplo têm obrigatoriamente que provir de um domínio. Nos casos em
que o valor não é conhecido pode exclusivamente ser atribuído o
valor null.
Modelo Relacional - Chaves
Um conceito fundamental no contexto do modelo relacional é o de “chave”.
Existem diferentes tipos de chaves:
Exemplos: {BI}, {BI, nome}, {Nº Eleitor, Freguesia}, {NºEleitor, BI}, {Nº Eleitor,
BI, Nome}, {Nome, BI, Nº Contribuinte, Nº Eleitor, Freguesia}
Pessoa CodigoPostal
Operador
Álgebra Relacional
Operador
Exemplo:
A B C Operação:
a b c Seleccionar instâncias
d e f com atributo “A”
g h i igual a “j”
União
Intersecção
Diferença Operações
Produto Cartesiano Binárias
Divisão
Junção Natural
Selecção Operações
Unárias
Projecção
Teoria de Conjuntos
Operações Fundamentais
União de Conjuntos
R ∪ S = {t | t ∈ R ∨ t ∈ S}
Teoria de Conjuntos
Operações Fundamentais
Intercessão de Conjuntos
R ∩ S = {t | t ∈ R ∧ t ∈ S}
Teoria de Conjuntos
Operações Fundamentais
Diferença de Conjuntos
R - S = {t | t ∈ R ∧ t ∉ S}
Teoria de Conjuntos
Operações Fundamentais
Produto Cartesiano de Conjuntos
Selecção de um Conjunto
σθ (R) = { t | t ∈ R ∧ θ(t) }
Teoria de Conjuntos
Operações Fundamentais
Projecção de um Conjunto
Junção de Conjuntos
R θ S = { t [R ∪ S] ∧ θ(t) } = σθ (R x S)
Teoria de Conjuntos
Operações Fundamentais
Divisão de Conjuntos
Sejam “R” e “S” conjuntos e “t”, “u” e “v” tuplos
de conjuntos. A divisão entre “R” e “S” pode ser
dada por:
R ÷ S = { t [R - S] | ∀ u ∈ S, ∃ v ∈ R | v[S] = u ∧ v [R - S] = t }
Álgebra Relacional
Esquema de uma Relação
OK
José 1234567 6200 Rua da ... 11 12
Compatibilidade de Esquemas
OK
Rua da ... 11 12 Rua da ... 12 11
• União:
R=A∪B
Esta operação exige que as duas relações iniciais tenham esquemas compatíveis (isto
é, além do mesmo grau, é necessário que tenham domínios compatíveis). O resultado
consiste numa relação contendo os tuplos pertencentes à primeira ou à segunda
relação ou a ambas.
A B C
A B C
A B C a1 b1 c1
a1 b1 c1
a2
a3
b2
b3
c2
c3
∪ a1
a4
b1
b4
c1
c4
= a2
a3
b2
b3
c2
C3
a4 b4 c4
Álgebra Relacional
Intersecção:
R=A∩B
Da mesma forma que a anterior, exige que as duas relações
iniciais tenham esquemas compatíveis (isto é, além do mesmo
grau, é necessário que tenham domínios compatíveis). A
relação final contém os tuplos comuns às duas relações iniciais.
A B C
A B C
a1 b1 c1 A B C
a2 b2 c2 ∩ a1
a4
b1
b4
c1
c4
= a1 b1 c1
a3 b3 c3
Álgebra Relacional
Diferença:
R=A-B
À semelhança das anteriores, também exige que as duas relações iniciais
tenham esquemas compatíveis (isto é, além do mesmo grau, é necessário
que tenham domínios compatíveis). A relação final contém os tuplos
pertencentes à primeira relação e não pertencentes à segunda.
A B C
A B C A B C
-
a1 b1 c1
a2 b2 c2
a1
a4
b1
b4
c1
c4
= a3
a2
b3
b2
c3
c2
a3 b3 c3
Álgebra Relacional
Produto Cartesiano:
R=AxB
Dadas quaisquer relações sem atributos comuns, o resultado do produto
cartesiano corresponde a todas as combinações possíveis dos tuplos da
primeira relação com os da segunda.
A B C D
a1 b1 c1 d1
A B a2 b2 c1 d1
C D
X
a1 b1 a3 b3 c1 d1
a2 b2
c1
c4
d1
d4
= a1 b1 c4 d4
a3 b3 a2 b2 c4 d4
a3 b3 c4 d4
Álgebra Relacional
Selecção:
σ <condição> (Relação)
Operador unário, que toma uma relação inicial e origina uma
outra contendo os tuplos da relação inicial que satisfazem a
condição
R descrita.
A B C
a1 b1 c1
a2 b2 c2 σ <A=a2> (R) A B C
a3
a2
b3
b4
C3
c4
= a2
a2
b2
b4
c2
c4
Álgebra Relacional
Projecção:
Π <lista_atributos> (Relação)
Tal como o anterior, é um operador unário, que toma uma relação inicial e
transforma-a em outra contendo apenas os atributos descritos em
“lista_atributos”
R
A B C A B
a1 b1 c1 a1 b1
a2 b2 c2 Π <A,B> (R) a2 b2
a3
a2
b3
b4
C3
c4
= a3
a2
b3
b4
Álgebra Relacional
Junção Natural:
R=A∞B
Esta operação combina tuplos provenientes de duas relações distintas com
base em atributos comuns. A relação final contém um tuplo por cada
combinação de tuplos das duas relações que contenham valores iguais nos
atributos comuns. É necessário existir pelo menos um atributo comum
(domínio) nas duas relações.
A B C
a1 b1 c1 C D A B C D
a2
a3
b2
b3
c2
c3
∞ c1
c3
d1
d3 =
a1
a3
b1
b3
c1
c3
d1
d3
a2 b4 c4
Álgebra Relacional
Divisão:
R=A÷B
Dadas duas relações em que o conjunto dos atributos da relação-divisor está contido no
conjunto de atributos da relação dividendo, o resultado da divisão das relações consiste nos
atributos que não figuram na relação divisor. Os tuplos resultado serão os que na relação
“dividendo” satisfazem os valores da relação “divisor”.
A B C D
a1 b1 c1 d1
a2 b2 c2 d2 C D A B
a1
a4
b1
b4
c4
c4
d4
d4
÷ c1
c4
d1
d4 =
a1
a4
b1
b4
a5 b5 c4 d4
a4 b4 c1 d1
Álgebra Relacional
A partir da combinação dos operadores da álgebra relacional
descritos anteriormente pode-se formalizar toda a linguagem de
pesquisa de informação numa base de dados.
Exemplo:
A B C
a1 b1 c1
a2 b2 c2
a3 b3 C3
a2 b4 c4
Projecção
A B C A B
a1 b1 c1 a1 b1
σ<C=c1>(Π<A,B> (R))
Álgebra Relacional
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3
a2 b4 c4
? ?
?
A A B C C
a1 a1 b1 c1 c1
a2 a2 b2 c2