1 Integridade dos Dados Integridade dos Dados Melissa Lemos melissa@inf.puc-rio.br A integridade dos dados é feita através de restrições, que são condições obrigatórias impostas pelo modelo. Restrições de Integridade Domínio Chave Integridade de Entidade Integridade Referencial 2 Restrição de Domínio O valor de cada atributo deve ser um valor atômico dentro do domínio daquele atributo ou um valor nulo. Inteiro Caracter Data XMLType... Restrição de Chave Uma relação deve ter pelo menos uma chave. Em uma relação, uma chave é um atributo ou conjunto de atributos cujo valor ou combinação de valores deve ser distinto em qualquer instância da relação. Quando existir mais de uma chave em uma relação, é escolhida uma, chamada de chave primária. As demais são chamadas de chaves candidatas 3 4 Integridade de Entidade Nenhum valor de chave primária pode ser nulo. Integridade Referencial A restrição de integridade referencial é usada para manter a consistência entre tuplas de duas relações: uma tupla em uma relação que se refere a uma outra relação deve referenciar uma tupla existente naquela relação. O atributo (ou conjunto de atributos) de uma relação R1 que referencia uma outra relação R2 é chamado de chave estrangeira. Cuidado pois o atributo não é chave de R1, seria melhor que o nome fosse atributo de ligação O valor da chave estrangeira em uma tupla de R1 deve existir como o valor da chave primária de alguma tupla de R2, ou se não for obrigatório, pode ser nulo. 5 6
7 Integridade Semântica Restrições de integridade semântica ou regras do negócio também podem ser especificadas no SGBD! Estas restrições dependem da semântica do negócio ou da aplicação Exemplo: Uma pessoa não pode ter mais de três contas bancárias O total de limite de créditos não pode ultrapassar 10.000. Todo salário tem que ser maior ou igual ao salário mínimo. View, Stored Procedure, Trigger 8 O que é visão? Visão, View Tabela virtual definida através de uma consulta Não há um espaço em disco no qual seus registros estão armazenados Definição fica armazenada no catálogo A consulta SQL é previamente gravada no banco e nomeada 9 10 Abstração Não é desejável que todos os usuários vejam o modelo lógico como um todo. Mundo Real Funcionários Trabalha em Projetos Visões Nível Externo Visão Visões lógicas ( alto nível ) da informação Facilita a documentação do BD Permite segurança de acesso sensível aos dados Permite alterações no nível conceitual sem impacto nas aplicações clientes Alocação Tabelas Nível Conceitual 11 12
13 Visão Pode ser usada em consulta Inserção, atualização e remoção com restrições Embora seja possível usar uma visão para modificação, há algumas restrições. De modo geral, se a visão for baseada em uma única tabela, as atualizações são possíveis. Mas se houver uma junção, agrupamento ou perda do atributo chave, muito provavelmente não será permitida a atualização. Sintaxe da visão CREATE VIEW nome [col1, col2,] SELECT [WITH CHECK OPTION] 14 Exemplo CREATE VIEW AniversariantesAgosto as SELECT nome, nascimento FROM Emp WHERE month(nascimento) = 08 Aniversariantes de Agosto empno 2387 2234 nome Adilson Adriana SELECT * FROM AniverariantesAgosto WHERE nome LIKE A% aniversário 12/08/1970 23/08/1955 15 Manipulação dos Dados CREATE VIEW FuncionáriosRJ SELECT col1, col2,, coln FROM Funcionários WHERE base = RJ VALUES (., SP ) Após a inserção, o usuário consulta a visão, e verifica que o funcionário que acabou de inserir não aparece. Por quê? Como o funcionário inserido era de São Paulo, não satisfaz o critério de seleção da visão, e obviamente, não pode retornar. Porém, se o usuário puder consultar a tabela de empregados, verá que a linha foi realmente inserida. 16 Manipulação dos Dados CREATE VIEW FuncionáriosRJ SELECT col1, col2,, coln FROM Funcionários WHERE base = RJ WITH CHECK OPTION Procedimento Armazenado, Stored Procedure VALUES (., RJ ) OK! VALUES (., SP ) 17 18
19 O que é Stored Procedure? Procedimento armazenado no SGBD e que deve ser chamado por um usuário ou uma aplicação. Stored Procedures Objetivo assegurar as restrições de integridade melhorar a segurança no acesso aos dados melhorar o desempenho das aplicações reduzir o volume de dados trafegados na rede melhorar a manutenção do software 20 Stored Procedures x SQL embutido Passos para execução Consultas SQL Análise Validação de nomes Verificação de Proteção Tradução Otimização Execução Chamadas a SPs Alocação da SP Verificação de proteção Substituição de parâmetros Execução Problemas com o uso de Stored Procedures Falta de padronização entre SGBDs, o que acarreta na dificuldade de portabilidade do código Existem SGBDs que ainda não disponibilizam esta funcionalidade, inviabilizando a distribuição do processamento entre a aplicação e o SGBD 21 22 Exemplo - Stored Procedure CREATE PROCEDURE p_exclui_pessoa (x_cpf IN CHAR(11)) x_nome VARCHAR(50); x_end VARCHAR(50); BEGIN SELECT nome, endereco INTO x_nome, x_end FROM pessoa WHERE cpf = x_cpf; INSERT INTO EX_CLIENTE VALUES (x_cpf, x_nome, x_end); DELETE FROM PESSOA WHERE CPF = x_cpf; EXCEPTION... END p_exclui_pessoa; Gatilho, Trigger 23 24
25 O que é Trigger? Procedimento disparado automaticamente pelo SGBD em resposta a um evento específico do banco de dados Regras ECA Evento Condição Ação O que é Trigger? Semelhante a um procedimento armazenado mas tem a sua execução disparada pelo SGBD quando ocorre um evento préestabelecido O evento é associado à tentativa de execução de operações sobre uma tabela (inclusão, exclusão e alteração) 26 Trigger Objetivo assegurar as restrições de integridade melhorar a segurança no acesso aos dados melhorar o desempenho das aplicações reduzir o volume de dados trafegados na rede melhorar a manutenção do software. Exemplo - Stored Procedure CREATE TRIGGER t_exclui_pessoa BEFORE DELETE ON pessoa FOR EACH ROW BEGIN INSERT INTO EX_CLIENTE VALUES (:old.cpf, :old.nome, :old.end); END t_exclui_pessoa; 27 28 Stored Procedure vs Trigger Stored Procedures Aplicação conhece as SPs Uso pelas aplicações deve ser autorizado explicitamente Execução disparada pela aplicação Triggers Aplicação não conhece os triggers Existência restrita ao DBA Uso independente de autorização Execução disparada pelo SGBD quando as condições forem satisfeitas 29