Banco de Dados I - Matéria Completa

Embed Size (px)

Citation preview

Banco de Dados I Aula 07/10Formas NormaisNormalizao um processo a partir do qual se aplicam regras a todas as tabelas do BD com o objetivo de evitar falhas no projeto, como redundncia de dados e mistura de diferentes assuntos numa mesma tabela.Ao projetar um BD, se temos um modelo de entidades e relacionamentos e a partir de construirmos o modelo relacional seguindo as regras de transformao corretamente, o modelo relacional resultante estar, provavelmente, normalizado. Mas nem sempre os modelos que nos deparamos so implementados dessa forma e, quando isso acontece, o suporte ao BD dificultado em ambos os casos, necessrio aplicar as tcnicas de normalizao, ou para normalizar (se caso citado), ou apenas validar o esquema criado (primeiro caso citado). Aplicando as regras descritas a seguir, possvel garantir um BD mais ntegro, sem redundncias e inconsistncias.Primeira Forma Normal 1FNDizemos que uma entidade est na 1FN quando no h itens repetidos (itens multivalorados) dentro dela, ou seja, somente devem existir valores atmicos (indivisveis) nos atributos das tuplas assim, para converter uma entidade no normalizada na 1FN, precisamos decomp-la em tantas entidades quantas forem necessrias para no ter itens repetidos.Em outras palavras podemos definir que a 1FN no admite repeties ou campos que tenham mais de um valor.Procedimentos: Identificar a chave primria da entidade; Identificar o grupo repetitivo e remove-lo da entidade; Criar uma nova entidade com a chave primria da entidade anterior e o grupo repetitivo.Exemplo de 1FNConsidere a tabela cliente: cod_cliente, nome, telefone e endereo.Cod_clienteNomeTelefoneEndereo

C001Jos9563-63129847-2501Rua Seis, 85 Morumbi 12536-965

C002Maria3265-8596Rua Onze, 64 Moema 65985-963

C003Jonas8545-89569598-6301Praa Ramos Liberdade 68858-633

Separando os itens multivalorados:Cod_clienteNomeTelefoneRuaBairroCEP

C001Jos9563-63129847-2501Rua Seis, 85Morumbi12536-965

C002Maria3265-8596Rua Onze, 64Moema65985-963

C003Jonas8545-89569598-6301Praa RamosLiberdade68858-633

Cod_clienteNomeRuaBairroCEP

C001JosRua Seis, 85Morumbi12536-965

C002MariaPraa Onze, 64Moema65985-963

C003JonasPraa RamosLiberdade68858-633

Cod_clienteTelefone

C0019563-6312

C0019847-8596

C0023265-8596

C0038545-8956

C00395986301

ExerccioMontar na 1FNMatrculaNomeTurmaTelefoneUnidade

C001Maria da SilvaBiologia ECO19999-88888888-9999Principal Realengo

C002Paula de SouzaBiologia ECO22222-33338888-4444Campus 2 Realengo

C003Claudia FonsecaPsicologia MEME13333-4444Praia Barra

C004Wiza ArrudaPsicologia FREUD3333-22224444-5555Praia Barra

MatrculaNomeSobrenomeDisciplinaTurmaUnidadeBairro

C001Mariada SilvaBiologiaECO1PrincipalRealengo

C002Paulade SouzaBiologiaECO2Campus2Realengo

C003ClaudiaFonsecaPsicologiaMEME1PraiaBarra

C004WizaArrudaPsicologiaFREUDPraiaBarra

Separando os itens multivalorados:MatrculaTelefone

C0019999-8888

C0018888-9999

C0022222-3333

C0028888-4444

C0033333-4444

C0043333-2222

C0044444-5555

Banco de Dados I Aula 21/10

Segunda forma normal 2FNColocar as entidades na 2FN um pouco mais difcil, pois envolve o conhecimento das dependncias funcionais. A entidade se encontra na 2FN se, alm de estar na 1FN, todos os seus atributos so totalmente dependentes da chave primria, isso significa que atributos que so parcialmente dependentes devem ser removidos.Se o nome do produto j existe na tabela produtos, ento no necessrio que ele exista na tabela vendas. A 2FN trata destas anomalias e evita que valores fiquem em redundncia no B.D.Procedimentos- Identificar os atributos que no so funcionalmente de toda a chave primria.- Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles.A chave primria da nova entidade ser o atributo do qual os atributos removidos so funcionalmente dependentes.Exemplo: Tabela vendas (N Pedido, Cod_Protudo, Produto, Quant, Valor_Unit, Subtotal)N PedidoCod_ProdutoProdutoQuantValor_UnitSubtotal

10051-934Impressora Laser51,500.007500,00

10061-956Impressora Deskjet3350,001050,00

10071-923Impressora Matricial1190,00190,00

10081-900Impressora Mobile6980,005880,00

Qual os atributos removidos so funcionalmente dependentes.N PedidoCod_ProdutoQuantValor_UnitSubtotal

10051-193451500,007500,00

10061-9563350,001050,00

10071-9231190,00190,00

10081-9006980,005880,00

N PedidoSubtotal

10057500,00

10061050,00

1007190,00

10085880,00

Banco de Dados I Aula 28/10Forma Normal de Boyce / Codd FNBCA forma normal de Boyce / Codd foi desenvolvida com o objetivo de resolver algumas situaes que no eram inicialmente cobertas pelas trs formas normais, em especial quando haviam vrias 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 primrias.Assim, para estar na FNBC, uma entidade precisa possuir somente atributos que so chaves candidatas.Vamos analisar o caso em que temos uma entidade formada pelos seguintes atributos:Cod_Aluno, Cod_Curso, Cod_Turma, Cod_ProfessorCod_AlunoCod_CursoCod_TurmaCod_Professor

A001SI011P345

A002DR012P432

A003AD013P423

Um mesmo professor pode ministrar aulas entre cursos e turmas diferentes. Sendo assim podemos identificar 3 chaves candidatas que so determinantes nessa entidade:Cod_Curso + Cod_Turma / Cod_Curso + Cod_Professor / CorTurma + CodProfessorO atributo Cod_Professor parcialmente dependente do Cod_Curso e de Cod_Turma, mas totalmente dependente da chaves candidata composta Cod_Curso + Cod_Turma.Desta forma a entidade deve ser desmembrada, resultando em duas: uma que contm os atributos que descrevem o AWNO em si, e outra WJ01 atributos designam o professor.Cod_AlunoCod_TurmaCod_Curso

A0011PSI01

A0022PDR01

A0033PAD01

Cod_TurmaCod_CursoCod_Professor

1PSI01345

2PDR01432

3PAD01432

Gerncia de TransaesTransaes- Conceito bsico para controle de concorrncia e recuperao: A transao.* Leituras (READS) e escritas (WRITES)*Aes Especiais: Commit (Compromissamento ou efetivao de transao), Abort ( Aborto de transao)- O SGBD v cada transao como uma sequncia de leituras e escritas delimitada por comandos BEGIN e Commit (ou ABort).

Concorrencia em um SGBD- A execuo concorrente de programas dos usurios essencial para o bom desempenho do SGBD.*Como acessos a disco so frequentes e relativamente lentos, muito importante manter a CPU ocupada executando vrios programas concorrentemente.- Uma aplicao pode efetivar muitas operaes sobre os dados lidos de um BD, mas para o SGBD s importam as leituras e as escritas realizadas.- Usurios submetem transaes e podem pensar que cada transao roda sozinha, como dona da mquina.*A concorrncia implementada pelo SGBD, que entrelaa aes (READS / WRITES de objetos no BD.) das vrias transaes.*Cada transao deve deixar o BD em um estado consistente.- O SGBD impes restries de integridade especificadas nos comandos CREATE TABLE, mas no entende realmente a semntica dos dados (por exemplo: ele no sabe computar os juros em uma conta de poupana)-Questes: Efeitos de entrelaamento de transaes e de quedas do sistema.

Banco de Dados I Aula 04/11As propriedades ACIDAtomicidade ou todas as aes da transao acontecem, ou nenhuma delas acontece.Consistncia se a transao consistente e o BD comea consistente, ele termina consistente.Isolamento a execuo de uma transao isolada da execuo de outras transaes.Durabilidade se uma transao concluda com sucesso (atravs de uma operao COMMIT bem sucedida), ento seus efeitos so persistentes (durveis).Satisfazendo as propriedades ACID- Controle de concorrncia*Garante a consistncia e o isolamento, dada a atomicidade das transaes. Em um SGBD so tarefas do mdulo gerente de LOG.- VOGGING e recuperao*Garantem a atomicidade e a durabilidade.Em um SGBD so tarefas do mdulo gerente de LOG.Exemplo:-Considere duas transaes:T1: BEGIN | A= A+100 , B= B-100 | ENDT2: BEGIN | A= 1.06*A , B = 1.06*B | END-Intuitivamente, a primeira transao est transferindo R$ 100 da conta B para a conta A. A segunda est creditando% de juros em ambas as contas.-No h garantia que T1 vai executar antes de T2 ou vice-versa, se ambas forem submetidas praticamente juntas. Contudo, o efeito invisvel tem de ser equivalente ao dessas duas transaes rodando serialmente (uma depois da outra), em uma ordem qualquer.-Considere o seguinte entrelaamento (ESCALONAMENTO):T1: A= A+100 B= B-100T2:A= 1.06*AB= 1.06*B-Tudo bem com o ESCALONAMENTO acima. Vejamos outro:T1: A= A+100B= 1.06*BT2: A= 1.06*A , B= 1.06*B-Como o SGBD v o segundo ESCALONAMENTO:T1: R(A) , W(A)R(B) , W(B)T2: R(A) , W(A) , R(B) , W(B)

O SGBD no pode permitir escalonamentos como este!T1: R(A) , W(A)R(B) , W(B)T2: R(A) , W(A) , R(B) , W(B)Grafo de dependncias ------------- T1T2 -------------

- Grafo de dependncias: Um n por transao, flecha de T1 para T2 se T2 ler ou escrever um objeto escrito pela ltima vez por T1.-O ciclo do grafo revela o problema. O resultado de T1 depende de T2 e vice-versa.-Escalonamentos Equivalentes: Para qualquer estado do BD, o efeito (no conjunto de objetos no BD) de executar um ESCALONAMENTO idntico ao efeito de executar o outro ESCALONAMENTO.-Escalonamento Serializvel: Um escalonamento que equivalente a uma execuo serial das transaes.-Se o grafo de dependncias de um escalonamento for acclico (no tiver ciclos), dizemos que o ESCALONAMENTO serializvel quanto ao conflito (CONFLICT SERIALIZABLE) tal ESCALONAMENTO equivalente a um escalonamento serial.-Essa a condio que tipicamente assegurada pelos SGBDs. Ela suficiente (mas no necessria) para que o ESCALONAMENTO seja serializvel.

Assegurando a SeriabilidadeProtocolo de travamento bifsico (TOW-PHASE LOCKING OU ZPL)-Baseado em bloqueios ou travas (locks).-Cada transao, antes de ler um objeto, precisa obter um bloqueio S (Shared ou Compartilhado) sobre o objeto. Antes de escrever em um objeto, a transao precisa obter um bloqueio X (exclusivo) sobre o objeto.-Depois que uma transao retirar algum bloqueio ela no poder requisitar novos bloqueios.*Variao: O protocolo ZPL ESTRITO, no qual cada transao retm seus bloqueios at ser efetivada (COMMIT) ou abortada.Enquanto uma transao detiver algum bloqueio X sobre um objeto, nenhuma outra transao conseguir um bloqueio (S ou X) sobre o objeto.Banco de Dados I AULA 11/11Atomicidade das transaes-Uma transao pode dar um COMMIT depois de completar todo o seu trabalho, ou pode dar um ABORT (ou ser abortada pelo SGBD) depois de executar algumas aes.-Uma propriedade muito importante garantida pelo SGBD e que todas as transaes so atmicas. O usurio pode pensar que uma transao ou executa todas as suas aes De uma s vez s, ou no executa ao nenhuma.*O SGBD faz um LOG de todas as aes, para poder desfazer (UNDO) as aes das transaes abortadas.-Isso garante que se cada transao preserva a consistncia do BD, ento todo escalonamento serializvel tambm preserva a consistncia do BD.Abortando uma transao-Se uma transao T1 for abortada, todas as suas aes devero ser desfeitas. Alm disso, se T2 tiver lido um objeto descrito por T1, ento T2 tambm precisar ser abortada.-A maioria dos sistemas evita esses abordos em cascata retendo os bloqueios de uma transao at que a transao de COMMIT (usando o protocolo ZPL estrito).*Se T1 escrever em um objeto, ento T2 s vai poder ser o valor escrito depois que T1 der COMMIT.-Para desfazer as aes de uma transao abortada, o SGBD mantm um LOG no qual cada escrita registrada. Este mecanismo tambm usado para recuperao de CRASHAS: quando sistema volta, so abortadas todas as transaes que estavam ativas no momento da queda.SYSTEM LOGAs seguintes aes so registradas no LOG:*T1 escreve em um objeto: so registrados o valor antigo (imagem anterior) e o valor novo ( ).*O registro do LOG precisa ir para disco antes da modificao no objeto (esta tcnica se chama WRITE-AHEAD-LOGGING ou WAL).*T1 de um COMMIT ou um ABORT: um registo de LOG indicando esta ao.Registros de LOG so encadeados atravs de um identificador de transao, de modo que seja fcil desfazer uma transao especificada.-O log mantido em disco(s) prprio(s). Para se ter armazenamento estvel (stable storage) usa-se a tcnica de espelhamento de blocos (dois blocos fsicos para cada bloco lgico).-Todas as aes de LOG (e, de fato, todas as aes de controle de concorrncia, tais como bloquear/desbloquear dados, lidar com deadlocks, etc.) so efetuadas transparentemente pelo SGBD.Algoritmo de recuperao de CRASHES-Trs fases:*Anlise: varre o LOG para frente (desde o ltimo checkpoint) para identificar todas as escritas que pudesses estar pendentes e todas as transaes que estavam ativas quando o sistema caiu.*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.-Usa as imagens posteriores nos registros de LOG dessas escritas.*Undo: varre o LOG para trs, desfazendo as escritas de todas as transaes que estavam ativas quando o sistema caiu.-Usa as imagens anteriores nos registros de LOG dessas escritas.