Вы находитесь на странице: 1из 87

Sumrio Banco de Dados

Conceitos
Padro ANSI para arquitetura de SGBD;
Modelo relacional de dados;
lgebra relacional e Clculo relacional;
Formas Normais;
Transao;
Commit em duas fases, Serializao;
Bloqueios
Exclusivos / Compartilhados
Granularidade
de inteno
Mtodo otimista de controle de concorrncia;

Digitally signed by PAULO CESAR AZEVEDO TEIXEIRA


PAULO CESAR DN: cn=PAULO CESAR AZEVEDO TEIXEIRA, c=BR,
o=ICP-Brasil, ou=Autoridade Certificadora SERPROACF
Reason: I am the author of this document
AZEVEDO TEIXEIRA Location: Rio de Janeiro
Date: 2009.10.19 17:49:36 -02'00'

Paulo Cesar Azevedo Teixeira 1


(pcateixeira@yahoo.com.br)
Banco de Dados
Padro ANSI para arquitetura de SGBD
Se divide em 3 nveis:
Nvel Interno: (tambm conhecido como nvel de armazenamento) o mais prximo do
meio de armazenamento fsico - ou seja, aquele que se ocupa do modo COMO os dados
so fisicamente armazenados dentro do sistema. Este nvel definido em termos de
construes voltadas para a mquina (bits e bytes).
Nvel Conceitual: (tambm conhecido como nvel lgico de comunidade) descreve a
estrutura do banco de dados como um todo - QUAIS os dados que devero/esto
armazenados;
Nvel Externo: (tambm conhecido como nvel lgico do usurio) o mais prximo dos
usurios - descreve as vises do banco de dados para um grupo de usurios;
-Tanto o nvel conceitual como o externo so definidos em termos de construes voltadas
para os usurios, como registros e campos.
- O principal objetivo das Arquitetura ANSI/SPARC era promover a Independncia de Dados
em relao as aplicaes que os manipulavam.
Paulo Cesar Azevedo Teixeira 2
(pcateixeira@yahoo.com.br)
Banco de Dados

Paulo Cesar Azevedo Teixeira 3


(pcateixeira@yahoo.com.br)
Banco de Dados
Independncia de Dados
- Dizemos que uma aplicao dependente de dados quando for impossvel mudar a
estrutura de armazenamento ou a estratgia de acesso sem afetar a aplicao.
- A independncia de dados um objetivo maior dos sistemas de banco de dados.
Podemos definir independncia de dados como a imunidade das aplicaes a mudanas
na estrutura de armazenamento ou na estratgia de acesso.
Independncia fsica de dados: a capacidade de modificar o esquema fsico sem
afetar os componentes do Banco de Dados. Por exemplo, criar um novo ndice em uma
tabela.
Independncia lgica de dados: a capacidade de modificar o esquema conceitual
sem necessidade de reescrever os programas aplicativos. Por exemplo, criar um novo
atributo em uma tabela.

Paulo Cesar Azevedo Teixeira 4


(pcateixeira@yahoo.com.br)
Sumrio Banco de Dados
Conceitos
Padro ANSI para arquitetura de SGBD;
Modelo relacional de dados;
lgebra relacional e Clculo relacional;
Formas Normais;
Transao;
Commit em duas fases, Serializao;
Bloqueios
Exclusivos / Compartilhados
Granularidade
de inteno
Mtodo otimista de controle de concorrncia;

Paulo Cesar Azevedo Teixeira 5


(pcateixeira@yahoo.com.br)
Banco de Dados
Modelo Relacional de Dados
Este modelo representa os dados contidos em um Banco de Dados atravs de relaes
que contm informaes sobre as entidades representadas e seus relacionamentos.
O Modelo Relacional, claramente baseado no conceito de matrizes, onde as chamadas
linhas (das matrizes) seriam os registros e as colunas (das matrizes) seriam os campos.
Os nomes das tabelas e dos campos so de fundamental importncia para compreenso
entre o que est armazenado, onde est armazenado e qual a relao existente entre os
dados armazenados.
No necessita de estruturas de ndice eficientes e hardware adequado para alcanar bom
desempenho em situaes prticas.
Quando uma relao pensada como uma tabela de valores, cada linha nesta tabela
representa uma coleo de dados relacionados. Estes valores podem ser interpretados
como fatos descrevendo uma instncia de uma entidade ou de um relacionamento.
Na terminologia do modelo relacional, cada tabela chamada de relao ou RelVar; uma
linha de uma tabela chamada de tupla; o nome de cada coluna chamado de atributo; o
tipo de dado que descreve cada coluna chamado de domnio.
Paulo Cesar Azevedo Teixeira 6
(pcateixeira@yahoo.com.br)
Banco de Dados

Paulo Cesar Azevedo Teixeira 7


(pcateixeira@yahoo.com.br)
Banco de Dados
Modelo Relacional de Dados
Tabela = Relao = RelVar = Conjunto de Tuplas (linhas) distintas.
Nome da Coluna = Atributo [ Simples (nome completo), Composto (Nome primeiro,
ltimo), Derivado (pode ser calculado) e Multivalorado (telefone).
Chave Simples = chave formada por apenas um atributo.
Chave Composta = chave formada por mais de um atributo.
Chave Primria = identifica univocamente a relao (CPF, RG) portanto no pode conter
valor nulo nem se repetir.
Chave Candidata ou Alternativa = atributo que poderia identificar univocamente a relao
tem as mesmas caractersticas de unicidade da chave primria podendo, contudo, no ter
seu preenchimento obrigatrio.
Chave Estrangeira = Primria em outra relao; especifica, genericamente, um
relacionamento entre tabelas.

Paulo Cesar Azevedo Teixeira 8


(pcateixeira@yahoo.com.br)
Banco de Dados
Modelo Relacional de Dados
RESTRIES DE INTEGRIDADE so normas estabelecidas para a manter a integridade
dos dados armazenados no Banco de Dados. As principais restries de integridade so:
Restrio de Domnio: os valores de atributos devem ser coerentes com os domnios
correspondentes. Cada Atributos de uma relao definido com base em um domnio
de valores (exemplos: Idade, seu domnio so os nmeros inteiros positivos; Salrios,
seu domnio so os nmeros reais positivos).
Restrio de Chave Primria (unicidade): cada valor de chave primria deve ser
nico dentro de seu escopo (a relao a que pertence).
Restrio de Entidade: o valor de uma chave primria nunca deve ser nulo. O valor
nulo no permite a identificao de uma tupla.
Restrio de Referncia: toda referncia a uma tupla atravs de chave estrangeira
deve ser verificada, ou seja, toda tupla referenciada deve previamente existir no Banco
de Dados a menos que esta restrio seja explicitamente desprezada pelo usurio do
Banco de Dados.
Paulo Cesar Azevedo Teixeira 9
(pcateixeira@yahoo.com.br)
Banco de Dados
Modelo Relacional de Dados
Outras restries so denominadas de Restries Semnticas, que podem ser ou no
especificadas ou garantidas por um BD Relacional.
Estas restries ditas semnticas se referem mais especificamente sobre valores ou
caractersticas que determinados atributos podem assumir no contexto de uma determinada
aplicao.
As Restries Semnticas podem definir intervalos de valores para os atributos, limites,
condies de existncia entre outras.
Exemplos:
- Salrio: valores no intervalo de R$ 150,00 a R$ 2400,00;
- Categoria: Senior se tempo de trabalho > 20, Pleno se tempo de trabalho >10, Jnior
caso contrrio.

Paulo Cesar Azevedo Teixeira 10


(pcateixeira@yahoo.com.br)
Sumrio Banco de Dados
Conceitos
Padro ANSI para arquitetura de SGBD;
Modelo relacional de dados;
lgebra relacional e Clculo relacional;
Formas Normais;
Transao;
Commit em duas fases, Serializao;
Bloqueios
Exclusivos / Compartilhados
Granularidade
de inteno
Mtodo otimista de controle de concorrncia;

Paulo Cesar Azevedo Teixeira 11


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional
Linguagens de consultas formais:
- Por meio de uma linguagem de consulta (Query Language) o usurio pode requisitar ao
SGBD informaes armazenadas no Banco de Dados. As linguagens de consulta podem
ser:
A) Procedurais O usurio descreve o algoritmo de acesso aos dados atravs de
uma seqncia de instrues (COMO).
B) No procedurais O usurio descreve a informao que deseja obter sem
descrever como obt-la (O QU).
- As linguagens de consulta e atualizao comerciais para sistemas relacionais baseiam-se
na LGEBRA RELACIONAL (procedural) e no CLCULO RELACIONAL (no procedural).
- As operaes da lgebra e do clculo exprimem o conjunto de consultas e
manipulaes possveis sobre uma base de dados relacional qualquer.

Paulo Cesar Azevedo Teixeira 12


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional
Operaes fundamentais da lgebra Relacional:
Restrio/Seleo (select):
Projeo (project):
Produto Cartesiano (cartesian product): x
Unio (union):
Diferena (set-difference):
Alm das 5 operaes fundamentais, a lgebra Relacional oferece as operaes:
Interseo:
Juno Theta:
Juno Natural:
Diviso:
SELEO e PROJEO so operaes UNRIAS. As outras trs operaes
(PRODUTO CARTESIANO, UNIO e DIFERENA) operam, cada uma, sobre um par de
relaes.
As operaes da AR sempre operam sobre relaes e devolvem como resultado uma
relao.
Paulo Cesar Azevedo Teixeira 13
(pcateixeira@yahoo.com.br)
Paulo Cesar Azevedo Teixeira 14
(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional
Relaes usadas nos exemplos:

Paulo Cesar Azevedo Teixeira 15


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 16


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 17


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 18


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 19


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 20


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 21


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 22


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 23


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 24


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 25


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 26


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 27


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 28


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 29


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 30


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 31


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 32


(pcateixeira@yahoo.com.br)
Banco de Dados
lgebra Relacional e Clculo Relacional

Paulo Cesar Azevedo Teixeira 33


(pcateixeira@yahoo.com.br)
Sumrio Banco de Dados
Conceitos
Padro ANSI para arquitetura de SGBD;
Modelo relacional de dados;
lgebra relacional e Clculo relacional;
Formas Normais;
Transao;
Commit em duas fases, Serializao;
Bloqueios
Exclusivos / Compartilhados
Granularidade
de inteno
Mtodo otimista de controle de concorrncia;

Paulo Cesar Azevedo Teixeira 34


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
Uma vez definidos os elementos de dados que formaro a base de dados, o prximo passo do projeto
do sistema simplificar os arquivos para remover elementos de dados redundantes e grupos
repetitivos.
- Esse processo de simplificao de arquivos que compem uma base de dados denominado
NORMALIZAO.
- Os conceitos e as tcnicas de normalizao foram desenvolvidos por Codd da IBM e sua equipe,
quando pesquisavam sobre a matemtica de conjuntos. De acordo com a teoria dos conjuntos, foram
estabelecidos cinco tipos de arquivos normalizados, denominados, em ordem crescente de
simplicidade: primeira forma normal (1FN), segunda forma normal (2FN), terceira forma normal (3FN),
quarta forma normal (4FN) e quinta forma normal (5FN).
- O processo de normalizao consiste basicamente em regras para definir adequadamente os
elementos de dados ou campos que comporo os arquivos de dados. As regras de normalizao de
arquivos visam a:
a) Minimizar redundncias;
b) Eliminar anomalias de atualizao;
c) Prover o melhor caminho de acesso a qualquer elemento de dado;
d) Assegurar resistncia a manutenes no modelo de dados;
e) Evitar dados no identificveis atravs de definio rigorosa de identificadores.
Paulo Cesar Azevedo Teixeira 35
(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- O processo de Normalizao pode ser considerado como a aplicao de uma srie de regras, que
constituem as Formas Normais que iro provocar a decomposio de esquemas de dados
insatisfatrios de algumas relaes, em novas relaes.
- A Normalizao tambm permite ao programador controlar o quanto da consistncia garantida pela
maneira de estrutura do BD, e quanto deve ser responsabilidade dos aplicativos e/ou do SGBD.
- No entanto deve ser realizada alguma ponderao: normalizar demais diminui a eficincia dos
aplicativos e de menos abre flancos para inconsistncias.
- Uma das maneiras de controlar a consistncia atravs de Dependncias Funcionais existentes
entre os atributos armazenados.
- A Dependncia Funcional baseia-se no reconhecimento que os valores de alguns atributos podem
ser determinados a partir de outros pelo SGBD, e portanto deve ser avaliado e informado pelo
programador ao BD. Se o valor de um conjunto de atributos A permite descobrir o valor de um outro
conjunto de atributos B, diz-se que A determina funcionalmente B, ou que B depende de A.
- A representao grfica para esta dependncia a seguinte : A B.

Paulo Cesar Azevedo Teixeira 36


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
-Conceito Formal de Normalizao:
um mecanismo formal para analisar esquemas de relaes, baseados nas suas chaves e
nas dependncias funcionais entre seus atributos, fazendo com que cada tabela represente
um nico fato .
- Dependncia Funcional:
- Um atributo B depende funcionalmente de A se, para um valor de A, este valor determinar
no mximo um valor de B. A determinante funcional de B.
- Pode ser:
- TOTAL o atributo da relao conhecido, apenas, a partir da chave primria;
- PARCIAL o atributo da relao conhecido, tambm, a partir de parte da chave
primria.
- TRANSITIVA o atributo da relao conhecido, tambm, a partir de outro atributo
que no seja parte da chave primria.

Paulo Cesar Azevedo Teixeira 37


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- Primeira Forma Normal (1FN)

- Uma relao se encontra na Primeira Forma Normal (1FN) se todos os atributos possuem
apenas valores atmicos (indivisveis).
- A 1FN no permite a construo de relaes que apresentem atributos compostos e nem
possibilita a existncia de atributos multivalorados em suas tuplas.
- Os nicos valores de atributos permitidos devem ser simples e atmicos.
- Colocar uma relao na 1FN significa eliminar os atributos multivalorados.
- Relaes que no esto na 1FN so chamadas de "Nested Relations" (relaes dentro de
relaes).
- A Forma Normal relacionada a uma tabela, ou seja, uma tabela est em uma
determinada forma normal.

Paulo Cesar Azevedo Teixeira 38


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais

Paulo Cesar Azevedo Teixeira 39


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais

Paulo Cesar Azevedo Teixeira 40


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- Segunda Forma Normal (2FN)
- Uma relao se encontra na Segunda Forma Normal (2FN) se:
- Estiver na primeira forma normal (1FN); e
- Todos os atributos no-chave dependerem da totalidade da chave primria
(eliminao da Dependncia Funcional Parcial).
- Para testar se um arquivo de dados est na segunda forma normal devemos fazer
inicialmente as seguintes perguntas:
- Qual o campo-chave do arquivo?
Se a chave for composta, isto , formada por mais de um campo, perguntamos tambm:
- H qualquer campo no-chave que dependa de apenas parte da chave?
- No arquivo do exemplo anterior, o produto, por si s, no suficiente para identificar
inequivocamente um determinado registro, pois vrios registros possuem o mesmo produto.
- Para obtermos uma chave identificadora exclusiva devemos concatenar produto com loja,
pois no h nenhuma chave [produto + loja] duplicada.
Paulo Cesar Azevedo Teixeira 41
(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- Assim, com a chave concatenada, devemos ainda fazer a segunda pergunta para cada campo no-
chave:
- A quantidade em estoque depende apenas de parte da chave? A resposta no, porque preciso conhecer
tanto o produto como a loja para se obter a quantidade.
- O preo depende apenas de parte da chave? A resposta tambm no, porque preciso conhecer tanto o
produto como a loja para se obter o preo.
- O telefone da loja depende apenas de parte da chave? Neste caso a resposta sim, pois se voc conhecer
a loja tambm poder saber qual o seu telefone, independentemente do produto.
- Portanto, o arquivo exemplificado anteriormente no est na segunda forma normal, pois ele no
passou pelo teste. Quando um arquivo de dados no est na segunda forma normal, a base de dados
no estar correta pelas seguintes razes:
- O arquivo de dados ocupar mais espao no disco do que seria necessrio, pois o nmero do telefone se
repete para cada produto armazenado no mesmo arquivo;
- Se uma loja mudar de nmero de telefone, todos os registros de produtos para aquela loja devero ter o
campo telefone alterado;
- Se ocorrer algum problema com o processo de atualizao dos dados, uma mesma loja poder aparecer
com nmeros de telefones diferentes, dependendo de qual registro seja acessado posteriormente, ou seja, a
integridade da base de dados estar comprometida;
- Quando uma loja possuir um nico produto e seu registro for eliminado (porque acabou o estoque), tambm
ser eliminado o telefone da loja, pois poder no haver outro lugar na base de dados que o armazene.
Paulo Cesar Azevedo Teixeira 42
(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
Para evitar esse problemas e obedecer segunda forma normal (2FN), o arquivo anterior
dever ser dividido em dois outros arquivos:

Paulo Cesar Azevedo Teixeira 43


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais

- Ambos os arquivos esto na 2FN. O arquivo de produtos em estoque est na segunda


forma normal porque os campos no-chave (quantidade, preo e valor total) so
dependentes de toda chave composta [produto + loja] e de nada mais.
- O segundo arquivo, lojas, tambm est na 2FN porque ele no possui uma chave
composta e, portanto, uma coluna no-chave, como endereo ou telefone, naturalmente
ser dependente da totalidade do nico campo-chave, que a loja.
- Por outro lado, fcil perceber que o arquivo anterior, apesar de estar na 1FN, contm
dados descrevendo duas coisas distintas: produtos e lojas. Como regra geral, uma tabela
numa base de dados deve armazenar dados que descrevam apenas uma entidade ou
evento. 44
Paulo Cesar Azevedo Teixeira
(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- Terceira Forma Normal (3FN)
- Uma tabela estar na terceira forma normal se:
- Estiver em 2FN; e
- Nenhum campo no-chave depender de qualquer outro campo no-chave (eliminao
da Dependncia Funcional Transitiva).
- Para verificar se uma tabela da 2FN tambm est na 3FN devemos perguntar:
Algum campo no-chave dependente de qualquer outro campo no-chave?
- O arquivo dos produtos em estoque possui trs campos (ou colunas) no-chave:
- quantidade, preo e valor total Se soubermos a quantidade em estoque e o preo,
saberemos o valor total em estoque.
- Portanto, o campo valor total dependente de dois campos no-chave, pois pode ser
obtido a partir da quantidade multiplicada pelo preo.
- Conclumos, ento, que o arquivo de produtos em estoque no est sob a 3FN.
- Se o campo valor total for eliminado, o arquivo de produtos em estoque passa a estar na
3FN, ocupando menos
Paulo Cesar Azevedo Teixeira espao no disco, sem qualquer perda de informao. 45
(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais

Paulo Cesar Azevedo Teixeira 46


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- Forma Normal de Boyce-Codd (FNBC)
- Uma tabela estar na Forma Normal de Boyce-Codd (FNBC), quando:
- Estiver na Primeira Forma Normal ; e
- Para cada chave candidata, todos os atributos que no participam da chave candidata
so dependentes no transitivos de toda a chave candidata.

Paulo Cesar Azevedo Teixeira 47


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- Uma tabela que estiver na 3FN tambm estar na 4FN se no contiver mais do que um fato
multivalor a respeito do objeto descrito pelo arquivo.
- Para que uma tabela de 3FN seja simplificada para a 4FN devemos, portanto, eliminar as
dependncias multivaloradas.
- A tabela abaixo no atende a exigncia da quarta forma normal.

Paulo Cesar Azevedo Teixeira 48


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- Quarta Forma Normal (4FN)
- Na tabela anterior temos uma dependncia multivalorada de produto em relao a
fornecedor e tambm de representante em relao a fornecedor.
- Para ser simplificada para a 4FN, esta tabela precisa ser subdividida em dois:
- fornecedor x produto; e
- fornecedor x representante.
- Neste caso, a chave primria de cada tabela sob a 4FN passa a ser fornecedor + produto e
fornecedor + representante.

Paulo Cesar Azevedo Teixeira 49


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- Quinta Forma Normal (5FN)
- O conjunto de relaes do BD estar na 5FN quando:
- Dado o conjunto de multi-dependncias funcionais do BD, no se estabelece um ciclo de multi-
dependncia entre pelo menos 3 atributos, ou os Atributos de um ciclo esto na mesma relao.
- Para que um conjunto de tabelas esteja na 5FN deve-se :
- Colocar todos os atributos multi-valorados que pertencem um mesmo ciclo em uma relao.

Paulo Cesar Azevedo Teixeira 50


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais
- Quinta Forma Normal (5FN)
- O conjunto de relaes anterior possui a seguinte lista de Multi-Dependncias Funcionais :
- Nome Disciplina (Cada professor pode ministrar vrias disciplinas)
- Nome Apostila (Um grupo de professor pode elaborar uma apostila)
- Disciplina Apostila (Cada disciplina pode ter um certo nmero de apostilas)
- Apostila Nome (Cada apostila pode ser elaborada por vrios professores)
- Aps a transformao teremos:

Paulo Cesar Azevedo Teixeira 51


(pcateixeira@yahoo.com.br)
Banco de Dados
Formas Normais

Paulo Cesar Azevedo Teixeira 52


(pcateixeira@yahoo.com.br)
Sumrio Banco de Dados
Conceitos
Padro ANSI para arquitetura de SGBD;
Modelo relacional de dados;
lgebra relacional e Clculo relacional;
Formas Normais;
Transao;
Commit em duas fases, Serializao;
Bloqueios
Exclusivos / Compartilhados
Granularidade
de inteno
Mtodo otimista de controle de concorrncia;

Paulo Cesar Azevedo Teixeira 53


(pcateixeira@yahoo.com.br)
Banco de Dados
Transao
Na viso do usurio, uma transao uma operao nica e indivisvel sobre um banco
de dados.Para a aplicao isso corresponde, geralmente, execuo de um conjunto de
diversas operaes sobre o banco de dados.
Assim, os sistemas de bancos de dados devem garantir que todo este conjunto de
operaes seja realmente uma nica unidade: ou totalmente executado ou no .
Colees de operaes que formam uma nica unidade lgica de trabalho so chamadas
de transaes.
Conceito:
Uma transao uma unidade de programa que acessa e/ou atualiza vrios itens
de dados.
Uma transao consiste de todas as operaes executadas entre comandos do tipo
begin transaction e end transaction, presentes nas linguagens de programao
utilizadas, ou ainda, entre os comandos delimitadores de transao (commit e rollback).
Exemplos:
Transferncia de recursos de uma conta bancria para outra
Marcao de assento em um vo
Paulo Cesar Azevedo Teixeira 54
(pcateixeira@yahoo.com.br)
Banco de Dados
Transao (cont.)
Seja uma transao bancria onde um cliente deseja transferir um valor da conta A
para a conta B. Basicamente, ele deve fornecer as seguintes informaes: Conta do
saque, Conta para depsito, Valor.
Abaixo o pseudo-cdigo das operaes necessrias:
Incio
Validar contas
Checar saldo na conta A
Subtrair valor do saldo atual da conta A
Somar valor ao saldo da conta B
Fim
Deve ser garantido que a transferncia seja totalmente realizada ou que as contas
permaneam como esto.
Na viso do usurio, uma transao uma operao nica e indivisvel sobre um banco
de dados. Para a aplicao isso corresponde, geralmente, execuo de um conjunto de
diversas operaes sobre o banco de dados.
Assim, os sistemas de bancos de dados devem garantir que todo este conjunto de
operaes seja realmente uma nica unidade: ou totalmente executado ou no .

Paulo Cesar Azevedo Teixeira 55


(pcateixeira@yahoo.com.br)
Banco de Dados
Propriedades das Transaes
- Para garantir integridade de dados, os SGBD devem manter as seguintes propriedades
para as transaes, denominadas propriedades ACID:
- Atomicidade (A): ou se executa todas as operaes de uma transao ou nenhuma
delas.
- Consistncia (C): toda transao deve preservar a consistncia do banco de dados.
- Isolamento (I): mesmo com a execuo concorrente de transaes, o efeito de cada
transao deve ser o mesmo como se ela estivesse executando sozinha.
- Durabilidade (D): aps o trmino com sucesso da transao, as atualizaes
realizadas devem ser persistentes.
- Exemplo: Seja uma transao Ti que transfere R$ 50 de uma conta bancria A para
outra conta B.
read (A);
A := A - 50;
write (A);
read (B);
B := B + 50;
write (B).
Paulo Cesar Azevedo Teixeira 56
(pcateixeira@yahoo.com.br)
Banco de Dados
Transao (cont.)
Se as contas A e B tinham inicialmente os valores R$ 1000 e R$ 2000 respectivamente,
ao final da transao deveriam ter R$ 950 e R$ 2050. E se ocorrer alguma falha logo aps
a operao write (A)?

O banco de dados tem de estar consistente antes do incio de uma transao e aps seu
trmino. claro que durante a execuo de uma transao (depois de iniciada e antes de
seu trmino), o banco de dados pode estar temporariamente inconsistente.
No caso de atomicidade, esta propriedade deve ser garantida pelo SGBD, atravs do
componente Gerncia de Transao.
No caso de consistncia, esta propriedade deve ser garantida pela aplicao, podendo
ser facilitada pelas restries de integridade ou triggers.
No caso de durabilidade, aps o trmino da transao e notificao ao usurio que a
mesma foi concluda com sucesso, o SGBD tem de garantir a persistncia dos dados.

Paulo Cesar Azevedo Teixeira 57


(pcateixeira@yahoo.com.br)
Banco de Dados
Transao (cont.)
- Para garantir durabilidade:
Os dados alterados por uma transao tem de ser gravados em disco antes do
trmino da transao;
O SGBD deve reconstruir as atualizaes realizadas quando o sistema for
restabelecido aps a falha.
- Durabilidade tem de ser garantida pelo SGBD, atravs do componente Gerncia de
Recuperao.
- No caso de isolamento, o que tem de ser garantido que mesmo com a execuo
concorrente de transaes, o efeito de cada transao deve ser o mesmo como se ela
estivesse executando sozinha.
- Uma soluo seria executar as transaes serialmente, sem permitir concorrncia. O
problema a performance.
- Isolamento tem de ser garantido pelo SGBD, atravs do componente Controle de
Concorrncia.

Paulo Cesar Azevedo Teixeira 58


(pcateixeira@yahoo.com.br)
Banco de Dados
Estados de Uma Transao.
Se durante a execuo de uma transao ocorrer uma falha, a transao abortada.

Neste caso, para garantir a atomicidade, todas as operaes executadas at ento


devem ser desfeitas, ou seja, deve ocorrer um rollback da transao, que controlada
pela Gerncia de Recuperao.

Quando uma transao teve sua execuo normal, deve ser committed. Uma
transao committed no pode ter suas atualizaes desfeitas pelo SGBD, mas apenas
por uma transao chamada de compensatria, de responsabilidade do usurio.

Uma transao deve estar em um dos seguintes estados:


Ativada: fica neste estado desde o incio at terminar sua execuo.
Parcialmente Committed: aps o ltimo comando ter sido executado.
Falhada: aps a descoberta de alguma anormalidade.
Abortada: aps a transao ter sido rolled back.
Committed: aps o trmino normal.

Paulo Cesar Azevedo Teixeira 59


(pcateixeira@yahoo.com.br)
Banco de Dados

Parcialmente
Committed Committed

Ativada

Falhada Abortada

Paulo Cesar Azevedo Teixeira 60


(pcateixeira@yahoo.com.br)
Banco de Dados
Estados de Uma Transao (cont.).
Uma transao est terminada se ela foi committed ou abortada.
O SGBD pode se recuperar de uma falha se os dados estiverem gravados em disco. No
caso de perda do disco, podem ser necessrios outros recursos.
Uma transao em estado de abortada, pode ser reiniciada pelo sistema (se a falha foi
devida a hardware ou software) ou ser eliminada (no caso de erro lgico).
Cuidados devem ser tomados com aplicaes que emitam comprovante para o usurio.
Somente devem ser emitidos aps a transao estar committed.

Implementao da Atomicidade e Durabilidade.


O componente Gerncia de Recuperao de um SGBD implementa suporte para
atomicidade e durabilidade.
Uma soluo simples para a garantia de atomicidade e durabilidade atravs de cpia
do banco de dados.

Paulo Cesar Azevedo Teixeira 61


(pcateixeira@yahoo.com.br)
Banco de Dados
Implementao da Atomicidade e da Durabilidade (cont.).
Antes de cada transao atualizar o banco de dados, uma cpia do mesmo realizada e
as alteraes so realizadas sobre a cpia. Se a transao terminou normalmente, a
cpia passa a ser o novo estado do banco de dados. Caso contrrio, ela simplesmente
eliminada.
Esta soluo muito ineficiente para grandes bancos de dados alm de no permitir
concorrncia.

Execues Concorrentes.
A motivao para uso de concorrncia em banco de dados a mesma usada em
multiprogramao em sistemas operacionais, ou seja, permitir executar mais transaes
no mesmo espao de tempo.
A questo chave garantir consistncia mesmo com a execuo concorrente de
transaes. O problema que mesmo que cada transao individual esteja correta, na
execuo concorrente a consistncia pode no ser preservada.
Se uma transao falha, necessrio desfazer todos seus efeitos para garantir a
propriedade de atomicidade.
Para garantir isso, necessrio estabelecer restries sobre o tipo de escalonamentos
que sero permitidos pelo sistema.

Paulo Cesar Azevedo Teixeira 62


(pcateixeira@yahoo.com.br)
Banco de Dados
Recuperao e Atomicidade.
O que se deseja que ou todas as alteraes feitas por uma transao j committed
sejam gravadas em disco, ou nenhuma delas.

Neste caso, a propriedade de atomicidade, poderia ser garantida das seguintes formas:
Desfazer todas as alteraes parciais da transao que j tiverem sido gravadas em
disco;
Garantir a gravao em disco dos blocos que ainda estavam em memria na hora
da falha.

O mtodo mais conhecido para se implementar estes requisitos atravs de log.

Log a estrutura mais utilizada para gravar as modificaes de banco de dados.

Log uma seqncia de registros (registros de log) que mantm informaes sobre
cada atividade de atualizao do banco de dados.

Paulo Cesar Azevedo Teixeira 63


(pcateixeira@yahoo.com.br)
Banco de Dados
Recuperao Baseada em Log.
Quando uma transao executa uma operao de escrita essencial que o registro de
log correspondente seja criado antes da modificao do banco de dados.
Atravs do registro de log podemos modificar o banco de dados, ou at mesmo desfazer
alteraes j realizadas.
Registros de log para serem teis na recuperao de falhas do sistema, devem estar
armazenados em memria no voltil.
O log contm um registro completo de todas as atividades do banco de dados.
Checkpoints.
Quando uma falha ocorre, a princpio o sistema deveria consultar todo o log para
determinar quais transaes necessitam ser desfeitas e quais necessitam ser refeitas.
Tal necessidade leva a dois problemas:
Tempo no processo de pesquisa do log;
Algumas transaes j tinham gravado seus dados no banco de dados.
Para reduzir este overhead, foi introduzido o conceito de checkpoints.

Paulo Cesar Azevedo Teixeira 64


(pcateixeira@yahoo.com.br)
Banco de Dados
Checkpoints (cont.).
Durante a execuo, o sistema mantm o log usando uma das duas tcnicas vistas
anteriormente.

Alm disso, o sistema estabelece os checkpoints que requerem a seguinte seqncia de


operaes:
Gravar em disco, todos os registros de log residentes na memria principal;
Gravar em disco, todos os blocos de buffer modificados;
Gravar em disco um registro de log do tipo <checkpoint>.

Quando ocorre uma falha, basta o sistema percorrer o arquivo de log para trs at
encontrar o primeiro registro de checkpoint.

Todas as alteraes realizadas pelas transaes j committed antes do checkpoint


estaro no banco de dados.

Paulo Cesar Azevedo Teixeira 65


(pcateixeira@yahoo.com.br)
Sumrio Banco de Dados
Conceitos
Padro ANSI para arquitetura de SGBD;
Modelo relacional de dados;
lgebra relacional e Clculo relacional;
Formas Normais;
Transao;
Commit em duas fases, Serializao;
Bloqueios
Exclusivos / Compartilhados
Granularidade
de inteno
Mtodo otimista de controle de concorrncia;

Paulo Cesar Azevedo Teixeira 66


(pcateixeira@yahoo.com.br)
Banco de Dados
Commit em Duas Fases
- Commit em duas fases refere-se a uma transao que pode utilizar dois ou mais bancos
de dados (multi-database), que podem estar localizados em servidores diferentes.
- Durante uma transao em bancos com essa caracterstica garante-se que o Commit
seja realizado em todos os bancos participantes ou em nenhum, ou seja, ou tudo
gravado ou nada gravado.
- Por exemplo, se uma aplicao atualiza dados em 2 banco de dados e feito um
commit, o recurso de commit em duas fases previne situaes como a de um dos bancos
ficar indisponvel e as mudanas serem realizadas somente em um dos bancos
envolvidos.
- Se qualquer um dos bancos em uma transao multi-database falhar no commit
(realizando assim o roll back), a transao marcada com o status de "limbo" em todos os
bancos. Mais tarde deve-se utilizar um utilitrio de linha de comando (ou similar) para
resolver a questo de transaes no limbo.

Paulo Cesar Azevedo Teixeira 67


(pcateixeira@yahoo.com.br)
Banco de Dados
Serializao
- Na maioria dos SGBD que seguem o padro ANSI da SQL possvel especificar que
uma transao pode ser executada de modo que se torne ou no passvel de seriao
em relao a outras transaes.
- Tal recurso oferecido tendo como base transaes longas cujos resultados no
precisam ser exatos, ou seja, aquelas em que a informao aproximada suficiente. Os
nveis de isolamento so os seguintes:
Passvel de Seriao (Serializable) este nvel o default na maioria dos SGBD.
Nele, a execuo concorrente de transaes tm a garantia de serem serializveis
(execuo concorrente de transaes que produzem o mesmo efeito que a execuo
serial dessas mesmas transaes).
Leitura Repetitiva (Repeatable Read) permite que somente registros confirmados
(commited) sejam lidos e ainda exige que, entre duas leituras de um registro por uma
transao, nenhuma outra transao tenha permisso de atualizar aquele registro. A
transao, porm, pode no ser passvel de seriao com relao a outras transaes.
Por exemplo, quando uma transao est procurando registros que satisfazem algumas condies, ela pode
encontrar alguns registros inseridos por uma transao confirmada mas pode no encontrar outros.
Paulo Cesar Azevedo Teixeira 68
(pcateixeira@yahoo.com.br)
Banco de Dados
Serializao (cont.)
Leitura Confirmada (Read Committed) permite que somente registros
confirmados sejam lidos mas no exige leitura repetitiva.
Por exemplo, entre duas leituras de um registro por uma transao, os registros podem ter sido atualizados por
outras transaes confirmadas (committed).

Leitura no Confirmada (Read Uncommitted) permite at mesmo que registros


no confirmados sejam lidos. o nvel mais baixo permitido.
Os diferentes nveis de isolamento so definidos em termos de trs fenmenos que podem
violar a seriao:
Leitura No Repetitiva;
Leitura Suja; e
Leitura Fantasma.

Paulo Cesar Azevedo Teixeira 69


(pcateixeira@yahoo.com.br)
Banco de Dados
Serializao (cont.)
Leitura No Repetitiva (Non-Repeatable Read) uma transao l o mesmo
objeto duas vezes durante a execuo e encontra um valor diferente na segunda vez,
embora a transao no tenha mudado o valor nesse meio tempo.
Por exemplo, uma transao T1 l uma linha. Uma outra transao T2 modifica ou apaga aquela linha e executa
um commit. Se T1 tentar ler a linha novamente, receber o valor modificado ou constatar que alinha foi
excluda.

Leitura Suja (Dirty Read) a transao l valores escritos por outra transao que
ainda no foi confirmada.
Por exemplo, uma transao T1 modifica uma linha. Uma outra transao T2 l essa linha antes que T1 faa um
commit. Se T1 executar um rollback, T2 ter lido uma linha com uma alterao no confirmada que pode ser
considerado como se ela nunca tivesse existido.

Leitura Fantasma (Phantom) uma transao reexecuta uma consulta que retorna
um conjunto de linhas que satisfazem uma determinada condio e descobre que o
conjunto de linhas mudou como resultado de outra transao confirmada recentemente.

Paulo Cesar Azevedo Teixeira 70


(pcateixeira@yahoo.com.br)
Sumrio Banco de Dados
Conceitos
Padro ANSI para arquitetura de SGBD;
Modelo relacional de dados;
lgebra relacional e Clculo relacional;
Formas Normais;
Transao;
Commit em duas fases, Serializao;
Bloqueios
Exclusivos / Compartilhados
Granularidade
de Inteno
Mtodo otimista de controle de concorrncia;

Paulo Cesar Azevedo Teixeira 71


(pcateixeira@yahoo.com.br)
Banco de Dados
Tcnicas de Controle de Concorrncia
Pessimistas
supem que sempre ocorre interferncia entre transaes e garantem a
seriabilidade enquanto a transao est ativa.
tcnicas:
bloqueio (locking);
timestamp;
Otimistas
supem que quase nunca ocorre interferncia entre transaes e verificam a
seriabilidade somente ao final de uma transao.
tcnica:
validao

Paulo Cesar Azevedo Teixeira 72


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueios Exclusivos / Compartilhados
Tcnicas mais utilizadas pelos SGBDs para controle de concorrncia.
Princpio de funcionamento
controle de operaes read(X) e write(X) e postergao (atravs de bloqueio)
da execuo de algumas dessas operaes de modo a evitar conflito.
Todo dado possui um status de bloqueio:
liberado (Unlocked - U);
com bloqueio compartilhado (Shared lock - S);
com bloqueio exclusivo (eXclusive lock - X).
Bloqueio Compartilhado (S)
solicitado por uma transao que deseja realizar leitura de um dado D.
vrias transaes podem manter esse bloqueio sobre D.
Bloqueio Exclusivo (X)
solicitado por uma transao que deseja realizar leitura+atualizao de um dado D.
uma nica transao pode manter esse bloqueio sobre D.

Paulo Cesar Azevedo Teixeira 73


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueios Exclusivos / Compartilhados
O Scheduler gerencia bloqueios atravs da invocao automtica de operaes de
bloqueio conforme a operao que a transao deseja realizar em um dado.
Operaes invocadas por transaes
ls(D): solicitao de bloqueio compartilhado sobre D
lx(D): solicitao de bloqueio exclusivo sobre D
u(D): libera o bloqueio mantido sobre D

Matriz de Compatibilidade de Bloqueios

Paulo Cesar Azevedo Teixeira 74


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueios Exclusivos / Compartilhados

Paulo Cesar Azevedo Teixeira 75


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueios Exclusivos / Compartilhados

Paulo Cesar Azevedo Teixeira 76


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueio em Duas Fases 2PL (Two-Phase Locking)
O uso de bloqueios S e X no garante escalonamentos serializveis.
necessrio que as transaes obedeam a um conjunto de regras de bloqueio ou
protocolo de locking.
A tcnica mais rigorosa que garante a seriabilidade o Bloqueio em 2 fases 2PL.
Premissa
para toda transao Tx, todas as operaes de bloqueio de dados feitas por Tx
precedem a primeira operao de desbloqueio feita por Tx
1. Fase de expanso ou crescimento
Tx pode obter bloqueios, mas no pode liberar nenhum bloqueio.
2. Fase de retrocesso ou encolhimento
Tx pode liberar bloqueios, mas no pode obter nenhum bloqueio.

Paulo Cesar Azevedo Teixeira 77


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueio em Duas Fases 2PL (Two-Phase Locking)

Paulo Cesar Azevedo Teixeira 78


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueio em Duas Fases 2PL (Two-Phase Locking)
Inicialmente a transao est na fase de crescimento e quando libera o primeiro lock
entra automaticamente na fase de encolhimento.
O ponto no escalonamento onde a transao obteve seu ltimo lock (fim da fase de
crescimento) chamado de lock point. Ordenando as transaes por lock points,
garantida a seriabilidade quanto ao conflito.
No protocolo strict two-phase locking, todos os locks exclusivos s so liberados
quando a transao termina (commit).
Um outro protocolo o rigorous two-phase locking, onde todos os locks s so
liberados quanto a transao termina (commit).

Paulo Cesar Azevedo Teixeira 79


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueios - Granularidade
Granulo:
poro do BD: atributo, tupla, tabela, bloco, ...
Nveis de Granularidade

Granularidade Fina
poro pequena do BD muitos itens de dados;
maior nmero de itens de dados a serem bloqueados e controlados pelo
scheduler;
maior concorrncia.
Granularidade Grossa
poro grande do BD menos itens de dados;
menor nmero de itens de dados a serem bloqueados e controlados pelo
scheduler;
menor concorrncia.

Paulo Cesar Azevedo Teixeira 80


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueios de Inteno
Indicam, em grnulos mais grossos, que Tx est bloqueando algum dado em um
grnulo mais fino
v o BD como uma rvore de grnulos.
Tipos de bloqueios de inteno
IS (Intention-Shared)
indica que um ou mais bloqueios compartilhados sero solicitados em nodos
descendentes.
IX (Intention-eXclusive)
indica que um ou mais bloqueios exclusivos sero solicitados em nodos
descendentes.
SIX (Shared-Intention-eXclusive)
bloqueia o nodo corrente no modo compartilhado, porm um ou mais bloqueios
exclusivos sero solicitados em nodos descendentes.

Paulo Cesar Azevedo Teixeira 81


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueios de Inteno

Paulo Cesar Azevedo Teixeira 82


(pcateixeira@yahoo.com.br)
Banco de Dados
Bloqueios de Inteno

Paulo Cesar Azevedo Teixeira 83


(pcateixeira@yahoo.com.br)
Banco de Dados
Mtodo Otimista de Controle de Concorrncia
Tcnicas pessimistas
overhead no processamento de transaes.
executam verificaes e aes antes de qualquer operao no BD para garantir a
seriabilidade (solicitao de bloqueio, teste de TS).
Tcnicas otimistas
no realizam nenhuma verificao durante o processamento da transao.
pressupem nenhuma ou pouca interferncia.
verificaes de violao de seriabilidade feitos somente ao final de cada transao.
tcnica mais conhecida: Tcnica de Validao.

Paulo Cesar Azevedo Teixeira 84


(pcateixeira@yahoo.com.br)
Banco de Dados
Mtodo Otimista de Controle de Concorrncia

Paulo Cesar Azevedo Teixeira 85


(pcateixeira@yahoo.com.br)
Banco de Dados
Mtodo Otimista de Controle de Concorrncia

Paulo Cesar Azevedo Teixeira 86


(pcateixeira@yahoo.com.br)
Banco de Dados
Mtodo Otimista de Controle de Concorrncia

Paulo Cesar Azevedo Teixeira 87


(pcateixeira@yahoo.com.br)

Вам также может понравиться