Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco de Dados I Materia Completa
Banco de Dados I Materia Completa
Formas Normais
Dizemos que uma entidade está na 1FN quando não há itens repetidos (itens
multivalorados) dentro dela, ou seja, somente devem existir valores atômicos
(indivisíveis) nos atributos das tuplas assim, para converter uma entidade não
normalizada na 1FN, precisamos decompô-la em tantas entidades quantas forem
necessárias para não ter itens repetidos.
Em outras palavras podemos definir que a 1FN não admite repetições ou campos que
tenham mais de um valor.
Procedimentos:
Exemplo de 1FN
Exercício
Montar na 1FN
Matrícula Telefone
C001 9999-8888
C001 8888-9999
C002 2222-3333
C002 8888-4444
C003 3333-4444
C004 3333-2222
C004 4444-5555
Banco de Dados I – Aula 21/10
Nº Pedido Subtotal
1005 7500,00
1006 1050,00
1007 190,00
1008 5880,00
Banco de Dados I – Aula 28/10
Forma Normal de Boyce / Codd – FNBC
A forma normal de Boyce / Codd foi desenvolvida com o objetivo de resolver
algumas situações que não eram inicialmente cobertas pelas três formas normais, em
especial quando haviam várias chaves na entidade, formadas por mais de um atributo
(chaves compostas) e que ainda compartilham ao menos um atributo. Isso nos leva a
concluir que o problema se devia ao fato de até agora as formas normais trataram de
atributos dependentes de chaves primárias.
Assim, para estar na FNBC, uma entidade precisa possuir somente atributos que
são chaves candidatas.
Vamos analisar o caso em que temos uma entidade formada pelos seguintes
atributos:
Cod_Aluno, Cod_Curso, Cod_Turma, Cod_Professor
Cod_Aluno Cod_Curso Cod_Turma Cod_Professor
A001 SI01 1P 345
A002 DR01 2P 432
A003 AD01 3P 423
Gerência de Transações
Transações
- Conceito básico para controle de concorrência e recuperação: A transação.
* Leituras (READS) e escritas (WRITES)
*Ações Especiais: Commit (Compromissamento ou efetivação de transação),
Abort ( Aborto de transação)
- O SGBD „vê‟ cada transação como uma sequência de leituras e escritas delimitada por
comandos BEGIN e Commit (ou ABort).
Concorrencia em um SGBD
- A execução concorrente de programas dos usuários é essencial para o bom
desempenho do SGBD.
*Como acessos a disco são frequentes e relativamente lentos, é muito importante
manter a CPU ocupada executando vários programas concorrentemente.
- Uma aplicação pode efetivar muitas operações sobre os dados lidos de um BD, mas
para o SGBD só importam as leituras e as escritas realizadas.
- Usuários submetem transações e podem pensar que cada transação roda sozinha, como
„dona‟ da máquina.
*A concorrência é implementada pelo SGBD, que entrelaça ações (READS /
WRITES de objetos no BD.) das várias transações.
*Cada transação deve deixar o BD em um estado consistente.
- O SGBD impões restrições de integridade especificadas nos comandos CREATE
TABLE, mas não entende realmente a semântica dos dados (por exemplo: ele não sabe
computar os juros em uma conta de poupança)
-Questões: Efeitos de entrelaçamento de transações e de quedas do sistema.
As propriedades ACID
- VOGGING e recuperação
Exemplo:
Assegurando a Seriabilidade
Protocolo de travamento bifásico (TOW-PHASE LOCKING OU ZPL)
-Depois que uma transação retirar algum bloqueio ela não poderá requisitar novos
bloqueios.
Enquanto uma transação detiver algum bloqueio X sobre um objeto, nenhuma outra
transação conseguirá um bloqueio (S ou X) sobre o objeto.
-Uma propriedade muito importante garantida pelo SGBD e que todas as transações são
atômicas. O usuário pode pensar que uma transação ou executa todas as suas ações “De
uma só vez só”, ou não executa ação nenhuma.
*O SGBD faz um LOG de todas as ações, para poder desfazer (UNDO) as ações
das transações abortadas.
-Isso garante que se cada transação preserva a consistência do BD, então todo
escalonamento serializável também preserva a consistência do BD.
-A maioria dos sistemas evita esses “abordos em cascata” retendo os bloqueios de uma
transação até que a transação de COMMIT (usando o protocolo ZPL estrito).
*Se T1 escrever em um objeto, então T2 só vai poder ser o valor escrito depois
que T1 der COMMIT.
-Para desfazer as ações de uma transação abortada, o SGBD mantém um LOG no qual
cada escrita é registrada. Este mecanismo é também usado para recuperação de
CRASHAS: quando sistema volta, são abortadas todas as transações que estavam ativas
no momento da queda.
“SYSTEM LOG”
As seguintes ações são registradas no LOG:
-Todas as ações de LOG (e, de fato, todas as ações de controle de concorrência, tais
como bloquear/desbloquear dados, lidar com deadlocks, etc.) são efetuadas
transparentemente pelo SGBD.
*Redo: refaz todas as escritas que podem estar pendentes de modo a assegurar que todos
os WRITES registrados no LOG foram de fato efetivados em disco.
*Undo: varre o LOG para trás, desfazendo as escritas de todas as transações que
estavam ativas quando o sistema caiu.