Restrições de Integridade Semântica

Documentos relacionados
Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

Prof. Josenildo Silva

SQL Básica. Andre Noel

Modelo Relacional + SQL (DDL) Material elaborado pela Prof. Karin Becker

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Banco de Dados I Introdução SQL

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

SQL Linguagem de Definição de Dados

Linguagem SQL Restrições, Triggers e Views

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia

SQL (Tópicos) Structured Query Language

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

TRIGGER e SEGURANÇA. Prof. Edson Thizon

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Sistemas de Informação e Bases de Dados 2012/2013. Stored Procedures e Triggers

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Triggers(Gatilhos) Tiago Alves de Oliveira

Linguagem SQL (Parte II)

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

SQL DDL Criando Tabelas e Restrições

Comandos DDL. id_modulo = id_m odulo

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

A linguagem SQL

Introdução ao PostgreSQL

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

SQL Gatilhos (Triggers)

IMPLEMENTAÇÃO DE BANCO DE DADOS

Revisão de Bancos de Dados

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL


S Q L Asserções, Visões e Técnicas de Programação. Daniel Bordignon Cassanelli Fernando Luiz Grando Pedro Patitucci Finamore

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

Programação SQL. Introdução

Linguagem SQL Sub-linguagem DDL

Sistemas de Informação

Visões ... Esquema Externo n. Esquema Externo 1. Esquema Lógico. Usuários finais/aplicações

Linguagem de Consulta Estruturada (SQL)

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL. Definição do Esquema da Base de Dados. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

O projeto físico do bando de dados consiste no mapeamento do projeto lógico para um DBMS real Projeto deve levar em conta fatores como:

A linguagem SQL

PSI Linguagem de Definição de dados. Módulo 15

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 16. Escola Politécnica da Universidade de São Paulo

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Regras de Integridade. Profa. Késsia Marchi

modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

Banco de Dados. Linguagem SQL

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Marcelo Henrique dos Santos

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Tabelas. Banco de Dados I MySQL

Structured Query Language (SQL) Aula Prática

SGBD. Funções Básicas de um SGBD

trigger insert, delete, update

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

ESTUDO DE CASO EM PL/SQL

Banco de Dados. Módulo 7 - Modelo Relacional. Definição do Esquema Relacional em SQL. modulo07.prz 1 10/09/01


SGBD. Definição. Funções básicas

Integridade dos Dados

(1,n) venda. (1,1) realizacao. cliente. (0,n) (1,1) contem. produto. Laboratório de Banco de Dados Exercicios

Transcrição:

Restrições de Integridade Semântica Controle de valores válidos para os dados estados dos dados condizentes com os requisitos da aplicação transições de estados corretas O SGBD deve controlar esta integridade subsistema de integridade semântica

Subsistema de Integridade Semântica Funções básicas especificação de regras de integridade (DDL) monitoração das atualizações de dados tratamento de violações de integridade ocasionadas por estas operações Definição de uma Regra de Integridade (RI) para quais dados deve-se verificar a regra quando a regra deve ser verificada que ação deve ser tomada Garantia de independência de gerenciamento de integridade de dados para as aplicações

RIs em SQL RIs associadas à criação de tabelas cláusula not null cláusula unique cláusula check restrições de integridade de entidade e referencial Assertivas (Assertions): predicados que devem ser sempre verdadeiros (ativação automática) Gatilhos (Triggers): disparo de ações vinculadas à execução de uma operação específica (ativação automática) Procedimentos (Stored Procedures): podem usadas para verificação de integridade (ativação pela aplicação ou pelo usuário)

RIs na Definição de Tabelas create table Empregados ( codemp integer, nome varchar(40)not null, RG numeric(10) not null unique, idade integer check (idade between 16 and 90), estadocivil char(10) check (estado_civil in solteiro, casado, viuvo, desquitado, divorciado ), salario numeric(8,2) check (salário > 0), temposerviço integer, codger integer, coddepto integer,...

RIs na Definição de Tabelas... constraint EmpPk primary key (codemp), constraint EmpCodg foreign key (codger) references Empregados on update cascade on delete set null, constraint EmpDept foreign key (coddepto) references Departamentos on update cascade on delete no action, constraint IdadeTS check(temposervico < idade), constraint EmpGer check(codemp < > codger), constraint SalarioGerente check(salario < (select salario from Empregados e where e.codemp = codger)) );

RIs na Definição de Tabelas create table Departamentos ( coddepto integer, nome varchar(20) check (nome in Vendas, Pessoal, Finanças, Administrativo ), Andar integer check (andar between 1 and 10), orçamento numeric(20,2), constraint DeptPk primary key (coddepto), constraint ControleOrç check( orçamento > = (select sum(salário) from Empregados e where e.coddepto = coddepto)) );

Assertiva - Assertion Declaração de predicado que deve ser sempre verdadeiro não está vinculado a uma tabela específica geralmente é uma RI que envolve várias tabelas independe da operação de atualização Exemplo create assertion ControleDespesas check ( (select sum(valortotal) from Empréstimos) + (select sum(orçamento) from Departamentos) <= 50000000.00) ) esta afirmação é verificada mesmo se alguma das tabelas estiver vazia

Gatilho - Trigger Execução automática de modificações no BD para garantia de integridade Princípio de funcionamento evento-[condição]-ação Especificação de um trigger evento que o dispara: comando atualização condição (opcional): predicado ação(ões) a realizar: comandos SQL ou execução de procedimentos (stored procedures)

Exemplos de Gatilho a) create trigger EmpréstimoLiquidado after update on Empréstimos (delete from Empréstimos where valortotal = 0) b) create trigger SalárioInjusto after insert, update on Empregados if exists (select * from Empregados where estadocivil = casado and salário < 1000.00) begin print salário injusto para o estado civil! exec CorrigeSalário end c) create trigger AumentoSalário before update on Empregados if NEW.salario < OLD.salario (Rollback Transaction)

Procedimento Stored Procedure Conjunto de comandos SQL mantido no BD Pode ser utilizado para controle de RI execução a cargo da aplicação ou usuário Exemplo débitos diários de parcelas de empréstimos create procedure PagaEmpréstimo as update Empréstimos set ValorTotal = ValorTotal ValorParcela, NroParcelas = NroParcelas 1 where DiaVencimento = day(getdate()) Chamada de um storedprocedure exec PagaEmpréstimo

Classificação de RIs X Suporte SQL RIs quanto ao alcance de dados cláusula check; asserts e triggers RIs quanto ao momento da verificação imediato (default) postergado (SQL padrão) set integrity for Departamentos off... set integrity for Departamentos immediate checked RIs de transição de estado triggers (com referência a valores novos/antigos) RIs de ativação explícita stored procedures

RIs no Postgres Triggers X Rules Triggers Invocam sempre uma função que trata a restrição Pode ser invocado para cada tupla afetada pelo comando de atualização CREATE TRIGGER SalárioInjusto BEFORE INSERT OR UPDATE ON Empregados FOR EACH ROW EXECUTE PROCEDURE VerificaSalárioAlterado(); Rules Similar a uma trigger (before) convencional Execução adicional (ALSO) ou alternativa (INSTEAD) CREATE RULE EmpréstimoLiquidado AS ON UPDATE TO Empréstimos DO ALSO DELETE FROM Empréstimos WHERE valortotal = 0)

RIs no Postgres Triggers X cláusulas Check e Assertivas Cláusula check não permite subconsultas Postgres não implementa Assertvas Triggers e funções devem ser utilizados para implementar estes tipos de RIs exemplo: salário do empregado deve ser menor que o salário do gerente CREATE TABLE Empregados (... CHECK(salario < (select salario from Empregados e where e.codemp = codger) ) CREATE TRIGGER SalárioGerente BEFORE INSERT OR UPDATE ON Empregados FOR EACH ROW EXECUTE PROCEDURE ComparaSalarios();

RIs no Postgres RIs Postergadas O comando ALTER TABLE permite habilitar ou desabilitar triggers O comando SET CONSTRAINTS permite definir uma trigger ou rule como imediata ou postergada Quando uma trigger ou rule passa de deferred immediate, testa retroativamente as alterações já realizadas... ALTER TABLE DISABLE TRIGGER SalárioGerente... SET CONSTRAINTS EmpréstimoLiquidado DEFERRED... SET CONSTRAINTS EmpréstimoLiquidado IMMEDIATE...