Subsistema de Integridade Semântica

Documentos relacionados
Subsistema de Integridade Semântica

Restrições de Integridade Semântica

Sistemas de Informação e Bases de Dados 2012/2013. Restrições de Integridade em SQL

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

SQL (Tópicos) Structured Query Language

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

ACH2025. Laboratóriode Bases de Dados. SQL Oracle Asserçõese gatilhos. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Banco de Dados I Introdução SQL

Linguagem SQL (Parte II)

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

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

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

Linguagem SQL Restrições, Triggers e Views

SQL Básica. Andre Noel

SQL Linguagem de Definição de Dados

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Prof. Josenildo Silva

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

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

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

Transacções. Vitor Vaz da Silva

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

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

Triggers(Gatilhos) Tiago Alves de Oliveira


Revisão de Bancos de Dados

Introdução ao PostgreSQL

A linguagem SQL

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

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

Restrições ao Domínio Integridade Referencial Asserções Triggers Segurança e Autorizações

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

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

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

Sumário. Introdução a Transações

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

A linguagem SQL

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

SQL DDL Criando Tabelas e Restrições

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

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

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

Comandos DDL. id_modulo = id_m odulo

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

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

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

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

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

BANCO DE DADOS TRIGGERS (GATILHOS) Prof. Fabiano Papaiz IFRN

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

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

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

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

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)

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

TRIGGER e SEGURANÇA. Prof. Edson Thizon

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

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

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

Teste Exemplo Revisão da tentativa 1

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

Linguagem de Definição de Dados (DDL)

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

Banco de Dados. Professora: Luciana Faria

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Linguagem de Consulta Estruturada (SQL)

Tabelas. Banco de Dados I MySQL

Linguagem SQL Sub-linguagem DDL

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

Curso de Ciência da Computação

IMPLEMENTAÇÃO DE BANCO DE DADOS

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

Sumário. Motivação. Aplicações precisam acessar o BD Linguagens BD X Linguagens Programação. paradigmas diferentes (impedance mismatch)

Revisão Banco de Dados

Regras de Integridade. Profa. Késsia Marchi

Programação SQL. Introdução

Linguagem SQL. Comandos Básicos

SQL. Índices, views e restrições. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

MySql. Introdução a MySQL. Andréa Garcia Trindade

Banco de Dados. Linguagem SQL

SQL Gatilhos (Triggers)

Modelo Entidade-Relacionamento (E-R)

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Views. uma view é uma tabela virtual. não existe fisicamente na BD. é definida à custa de outras tabelas ou views. CREATE VIEW <nome> AS <query>;

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

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

trigger insert, delete, update

Structured Query Language (SQL) Aula Prática

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

SQL: Definição de tabelas, Modificações à Base de Dados

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

Marcelo Henrique dos Santos

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

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 1

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,... 2

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)) ); 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 3

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 < 250.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) 4

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 RIs no SQL-Server RIs de transição de estados duas tabelas especiais mantidas pelo SGBD inserted mantém o novo valor de uma tupla atualizada ou uma nova tupla inserida no BD deleted mantém o valor antigo de uma tupla atualizada ou uma tupla excluída do BD exemplo: salários sempre reajustados para mais! create trigger ReajustaSalario on empregados before update as If NEW.salario < OLD.salario (Rollback Transaction) create trigger ReajustaSalario on empregados after update as if exists (select * from empregados e1 join deleted e2 on e1.codemp = e2.codemp and e2.salario > e1.salario) rollback transaction 5

RIs no SQL-Server Cláusula Check não permite subconsultas RIs que necessitam relacionar tuplas da mesma tabela ou de outras tabelas devem ser implementadas através de gatilhos 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 SalarioGer on empregados after insert, update as if exists (select * from empregados e1 join inserted e2 on e1.codemp = e2.codger and e2.salario > e1.salario) rollback transaction RIs no SQL-Server Assertivas não são suportadas estas RIs devem ser implementadas através de gatilhos exemplo: soma de orçamentos e empréstimos não pode ultrapassar 50000000,00 create assertion ControleDespesas check ( (select sum(valortotal) from Empréstimos) + (select sum(orçamento) from Departamentos) <= 50000000.00) ) create trigger ControleDespesas on Empréstimos after insert,update as select sum(valortotal) as soma1 into temp1 from Empréstimos select sum(orçamento) as soma2 into temp2 from Departamentos if (select soma1 + soma2 from temp1,temp2) > 50000000.00 rollback transaction drop table temp1 drop table temp2 Obs.: prever um trigger também para Departamentos 6

RIs no SQL-Server RIs Postergadas não são suportadas uma forma de tratamento pode ser desabilitar a execução da RI, habilitá-la posteriormente e tratar a RI através de uma stored procedure exemplo: alteração dos salários de empregados e verificação posterior da RI do orçamento do departamento begin transaction alter table Departamentos nocheck constraint ControleOrç update empregados set salario = salario + 100 where temposervico > 30 alter table Departamentos check constraint ControleOrç if dbo.verificaorçamento() > 0 rollback transaction commit transaction 7