Baixe o app para aproveitar ainda mais
Prévia do material em texto
PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 1 Replicas de Banco de Dados REPLICAÇÃO DE BANCO DE DADOS Replicas On-Line. Replicas Stand by DataBase. Replicas Snap Shot. REPLICAS ON-LINE Os dados que são armazenados em uma base de dados são replicados imediatamente em outra base de dados. Usa um protocolo chamado ‘two phase commit’, ou seja, commit em duas fases. A transação não se completa se houver falha no outro banco de dados. TWO PHASE COMMIT Banco A Banco B Lado A confirma transação Lado B recebe transação Lado B confirma transação Lado A recebe confirmação Lado A conclui a transação STAND BY DATABASE Uma cópia fiel do banco de dados fica a disposição em outro servidor. A cada arquivo de log gerado, este é copiado para o ‘stand by database’ e é aplicado as transações. Em caso de falha do banco principal, o stand by database pode assumir o papel do banco principal. STAND BY DATABASE O atraso é de no máximo 1 log de banco de dados a ser reprocessado. O banco principal e o stand by database não podem ficar ‘on-line’ ao mesmo tempo. Este é um recurso muito utilizado pois não custa caro. SNAP SHOT É um ‘clone’ do seu banco de dados. Geralmente depende de recursos de um Storage SAN. Tira uma fotografia instantânea do seu banco de dados e copia para um outro local, permitindo o uso imediato dos dados. Conforme vai copiando vai atualizando. STORAGE - SAN PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 2 Alta Disponibilidade de Banco de Dados HA (High Availability) ALTA DISPONIBILIDADE DE BANCO DE DADOS Ambiente de Alta Disponibilidade – High Availability. Conhecido como Cluster de banco de dados. A Oracle chama de RAC – Real Application Cluster. É a capacidade de fazer um banco de dados ‘rodar’ em dois ou mais servidores ao mesmo tempo. Custo elevado x Necessidade do negócio. ALTA DISPONIBILIDADE DE BANCO DE DADOS CONCLUSÃO A distribuição dos dados precisa de um planejamento cuidadoso, pois a performance e a segurança são imprescindíveis. A maioria dos SGBDs possuem recursos para tal finalidade. É preciso encontrar o equilíbrio entre o uso da tecnologia e o custo envolvido (custo benefício). PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 3 ENTENDENDO A ESTRUTURA DE COMANDOS SQL – Linguagem de Definição de Dados - DDL INTRODUÇÃO Foi o principal fator para que os SGBDs comerciais terem sucesso de mercado. Linguagem de Consulta Estruturada ou Structure Query Language surgiu dentro dos laboratórios de pesquisa da IBM na década de 70. INTRODUÇÃO A semântica dos comandos facilita a compreensão do que esta se querendo fazer. A leitura do comando é muito intuitiva. A adoção por vários SGBDs fez com que os programas pudessem ser mais independentes do SGBD para o qual foi desenvolvido. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Os comandos DDL servem para a criação das estrutura de armazenamento e a sua manutenção também. Comandos DDL não acessam os dados, porém interferem em sua existência ou forma de armazenamento e acesso. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Criação de uma tabela fisicamente dentro do banco de dados. –Create table <nome da tabela> ( <nome campo1>, <nome campo2>, <nome campo3>, <nome campo4> ) <opções> * Pequenas variações podem ocorrer de SGBD para SGBD. PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 4 ENTENDENDO A ESTRUTURA DE COMANDOS SQL – Linguagem de Definição de Dados - DDL LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Deleção de uma tabela existente fisicamente no banco de dados. –Drop table <nome da tabela> Os relacionamentos da tabela a ser deletada devem ser desativados antes da deleção senão o comando poderá não funcionar. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Alteração de uma tabela existente fisicamente dentro do banco de dados. – Alter table <nome da tabela> add ( <nome campo1>) – Alter table <nome da tabela> modify (<nome campo1> <tipo campo> <opções> ) – Alter table <nome da tabela> drop (<nome campo1> ) * As regras de negócio não podem ser violadas. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Inclusão de um novo atributo na tabela coloca este atributo no final do registro. As opções escolhidas para o campo novo valem para todos os registros já gravados no banco de dados. A Deleção de um campo só precisa de maior atenção se este campo for parte de algum tipo de chave primária ou estrangeira. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Um campo novo com opção de ‘not null’ ou seja preenchimento obrigatório. Se a tabela estiver vazia, vai ser implementado sem nenhum problema. Porém se a tabela já contiver algum registro gravado, vai dar erro. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Como é possível incluir um campo novo com uma regra de negócio que obrigue o campo a ter um valor se o campo é novo. Incluir sem a opção de ‘not null’. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Carregar dados para todos os registros da tabela neste campo. Salvar os dados. Fazer a modificação desta opção ‘not null’. Salvar novamente os dados. PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 5 ENTENDENDO A ESTRUTURA DE COMANDOS SQL – Linguagem de Definição de Dados - DDL LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Atualizações que modificam as características de armazenamento devem ser observado os relacionamentos com outras tabelas, para que não haja problemas de relacionamento. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Modificar o tipo do campo também pode trazer alguns problemas, pois algumas modificações podem ser realizadas e outras não. Um campo numérico para alfanumérico. Um campo alfanumérico para numérico. Um campo data para booleano. Um campo binário para alfanumérico. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Modificar o tamanho do campo é outro ponto muito polêmico também, pois algumas modificações podem ser realizadas e outras não. Aumentar o tamanho de um campo. Diminuir o tamanho de um campo. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL No geral, as modificações que forem realizadas com a tabela vazia, a maioria deve funcionar. E as modificações com a tabela contendo registros gravados nem sempre vai ser tão fácil de se realizar. PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 6 Linguagem de Definição de Dados – DDL Chaves Primárias e Estrangeiras LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Definição de uma chave primária. Pode ser feita no momento da criação da tabela. – Create table T1 ( <campo> PRIMARY KEY, <campo>); ou – Create table T1 ( <campo>, <campo>, PRIMARY KEY (<campo>) ); LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Pode ser feita depois que uma tabela já exista. – Alter table T1 ADD PRIMARY KEY (<campo>); O <campo> deve ser definido como ‘not null’. O <campo> deve estar preenchido em todos os registros da tabela e não pode ter nenhum dados duplicado. LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Definição de uma chave estrangeira. Pode ser feita no momento da criação da tabela. – Create table T2 ( <campo> REFERENCES T1 (<campo_pk_T1>); ou– Create table T2 ( <campo>, FOREIGN KEY (<campo>) REFERENCES T1 (<campo_pk_T1>)); LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Pode ser feita depois que uma tabela já exista. –Alter table T2 ADD (CONSTRAINT fk_campo) FOREIGN KEY (<campo>) REFERENCES T1 (<campo_pk_T1>); –Alter table T2 ADD FOREIGN KEY (<campo>) REFERENCES T1 (<campo_pk_T1>); LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Definição de um campo UNIQUE. –O conteúdo não pode ser repetido. –Aceita 1 registro com o conteúdo vazio nulo). –Create table T1 ( <campo> varchar2(1) UNIQUE); LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Definição de um campo com valor DEFAULT. –Quando o conteúdo não é indicado, recebe o valor ‘default’ definido. –Create table T1 ( <campo> varchar2(1) DEFAULT ‘X’); LINGUAGEM DE DEFINIÇÃO DE DADOS - DDL Definição de um campo com valor restrito (CHECK). – Só aceita o conteúdo que satisfazer a regra de CHECK estabelecida. – Create table T1 ( <campo> number(3) CHECK (<campo> < 50); PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 7 Visões Lógicas - VIEWs COMANDO VIEW Vamos praticar a criação e manipulação de visões lógicas (view). Os SGBDs possuem uma facilidade que é a possibilidade de criação de visões lógicas de tabelas, onde somente os dados pré- selecionados estarão disponíveis ao usuário. COMANDO VIEW Os filtros podem ser: –Por linha (registro). –Por coluna (campo). –Por tabela (tabela). Uma visão só permite leitura (select). COMANDO VIEW Create view <visão> as select <campo> from <tabela> where <condição>; Ex. –Create view v_cliente as select nome_cliente, sexo_cliente from cliente where cidade_cliente = ‘londrina’; COMANDO VIEW Create table montadora ( id_montadora varchar2(3), nom_montadora varchar2(20), pais_montadora varchar2(20)); Create table carro (nom_carro varchar2(15), id_montadora varchar2(3), combustivel_carro varchar2(1), cor_carro varchar2(15)); COMANDO VIEW Vamos gravar 5 montadoras. –1, honda, japao –2, nissan, japao –3, renault, franca –4, mercedes, alemanha –5, fiat, italia COMANDO VIEW Vamos gravar 8 carros. –Civic, 1, f, cinza –City, 1, f, preto – Sentra, 2, g, prata – Fluence, 3, g, preto –ClasseA, 4, g, branco – Strada adv, 5, f, vermelho PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 8 Prática SQL – Visões Lógicas COMANDO VIEW Vamos criar as visões. –Create view visao1 as select nom_montadora, nom_carro from montadora, carro; –Create view visao2 as select nom_montadora, nom_carro from montadora m, carro c where m.id_montadora = c.id_montadora; COMANDO VIEW Vamos criar as visões. –Create view visao3 as select nom_montadora, nom_carro from montadora m, carro c where m.id_montadora = c.id_montadora and pais_montadora = ‘japao’; COMANDO VIEW Vamos criar as visões. –Create view visao4 as select nom_montadora, pais_montadora, nom_carro, cor_carro from montadora m, carro c where m.id_montadora = c.id_montadora and cor_carro = ‘preto’; COMANDO VIEW Utilizando as visões. – Select * from visao1; – Select * from visao2; – Select * from visao3; – Select * from visao4; –Desc visao1; – Select * from user_views; PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 9 Prática SQL - Triggers TRIGGER São gatilhos disparados automaticamente pelo BD sempre que acontecem algum evento que modifique os dados das tabelas no BD. O gatilho é individual por tabela. O gatilho executa uma lógica programada. TRIGGER O gatilho pode ser acionado quando um dos seguintes comandos é executado: – Insert – um novo registro é gravado na tabela. –Update – um registro existente na tabela é atualizado. –Delete – um registro existente na tabela é removido. TRIGGER Depois que o comando é direcionado ao banco de dados, e a necessidade de execução de um gatilho é verificada, ainda tem mais duas situações a serem analisadas: –Before – acionar o gatilho antes de executar o comando. –After – acionar o gatilho depois de executar o comando. TRIGGER Portanto temos 6 combinações de gatilhos possíveis por tabela. –Before insert. –After insert. –Before update. –After update. –Before delete. –After delete. TRIGGER O gatilho é acionado uma única vez. Porém, existe uma variação sintática que permite a sua execução, uma vez para cada registro afetado pelo comando. – For each row. TRIGGER Create or replace trigger <nome trigger> <nome do evento> on <nome da tabela> <Lógica programada / bloco PL/SQL> end; TRIGGER Para testarmos as triggers, vamos gravar uma mensagem na tabela TABLOG sempre que uma trigger da tabela TB1 for acionada. Create table TABLOG (msg varchar2(50)); Create table TB1 (nome varchar2(20)); PROFESSOR ROBERTO YUKIO NISHIMURA ESPECIALISTA EM ADMINISTRAÇÃO DA ENGENHARIA DE SOFTWARE BANCO DE DADOS - II Video Aula 10 Prática SQL - Triggers TRIGGER Create trigger T_TB1_B_I before insert on TB1 Begin Insert into TABLOG values (‘before insert tb1’); End; / TRIGGER Create trigger T_TB1_A_U after update on TB1 for each row Begin Insert into TABLOG values (‘after update tb1’); End; / TRIGGER Create trigger T_TB1_X before delete OR after delete on TB1 Begin Insert into TABLOG values (‘delete tb1’); End; / TRIGGER Controlando as triggers. Eliminar uma trigger. –Drop trigger <nome_trigger>; TRIGGER Desabilitando uma trigger. –Alter trigger <nome_trigger> disable; Reativando uma trigger. –Alter trigger <nome_trigger> enable; TRIGGER Informações úteis. – Show errors triggers <nome_trigger>; – Show errors; –Desc user_triggers;
Compartilhar