Professional Documents
Culture Documents
Vania Bogorny
Restries de Integridade
Check constraints
Gatilhos
Asseres
Garantidas pelo
SGBD
O programador
No se preocupa
Com estas restries
Restries de Vazio
Abodagem relacional
todas colunas que compem a chave primria
devem ser obrigatrias
demais chaves podem conter colunas opcionais
Regra Nulo
Exemplo em SQL:
Restries de Domnio
Restries de Domnio
Restries de Domnio
Restries de Domnio
Maria
25/02/1973
549
Pedro
14/06/1990
Restries de Chave
Chave simples
Create table medico
(codigoM integer not null,
nome varchar(30) not null,
endereco varchar(35),
PRIMARY KEY (matricula) )
chave composta
Create table consulta
(codigoMedico integer not null,
codigoPaciente integer not null,
data date not null,
PRIMARY KEY (codigoMedico,
codigoPaciente, data))
Restries de Integridade
Referencial
Exemplo
Cliente
codigoClient
e
Nome
endereco
codigoCidade
548
Maria
549
Pedro
codigoCidad
e
Descricao
Estado
Florianpoli
s
SC
So Jos
SC
(codigoCidade))
A restrio garante que no ir existir CLIENTE que more numa cidade que no exista na tabela CIDADE
Excluso:
removida
ON DELETE
Alterao:
alterada
ON UPDATE
AES:
NO
SET
Cliente
Cidade
codClient
e
Nome
endereco
codCidad
e
codCidad
e
Descricao
Estado
548
Maria
SC
549
Pedro
Florianpoli
s
Excluso: ao excluir uma cidade da tabela CIDADE, o SGBD precisa garantir que
no exista nenhum cliente na tabela CLIENTE referenciando esta cidade
vrias opes para garantir a integridade:
(opo 1) Setar para nulo o codigo da cidade na tabela CLIENTE
Cliente
Cidade
codClient
e
Nome
endereco
codCidad
e
codCidad
e
Descricao
Estado
548
Maria
NULL
SC
549
Pedro
Florianpoli
s
Cliente
Cidade
codClient
e
Nome
endereco
codCidad
e
codCidad
e
Descricao
Estado
548
Maria
SC
549
Pedro
Florianpoli
s
Cliente
Cidade
codClient
e
Nome
endereco
codCidad
e
codCidad
e
Descricao
Estado
548
Maria
Rua Carvalho
615
Florianpoli
s
SC
Excluso: on delete cascade til quando: ao eliminar uma nota fiscal os seus itens
sejam removidos.
Nota
Produto
numero
codCliente
Data
001
20/02/200
6
002
20/05/200
8
Itens_nota1
003
20/04/200
Numero
codProduto 8qtde
codProduto
Nome
valor
548
Pao
3,00
001
548
549
Leite
2,00
001
549
Restries SEmnticas
Check constraints
CREATE TABLE products ( product_no integer, name text, price
integer CHECK (price > 2 );
Teste: insert into products values (1,teste,0)
CREATE TABLE products ( product_no integer, name text, price numeric CONSTRAINT
positive_price CHECK (price > 0) );
Gatilhos
Gatilhos
Interessante quando a incluso, alterao
ou excluso de um atributo em alguma
tabela tiver algum efeito sobre um atributo
de outra tabela
Exemplo: quando o saldo da conta do
cliente for negativo, insira
automaticamente um registro na tabela
emprstimo e faa o valor do saldo na
conta receber o valor zero
Gatilhos
No so o modo recomendado para
implementar restries de integridade
RI so normalmente suportadas pelos
SGBD atuais
Gatilhos podem ser disparados ANTES ou
DEPOIS do evento (insert, delete, update)
especificado
Gatilhos (triggers)
Define trigger saldo-negativo
On update of deposito t
(if new t.saldo<0 then
insert into emprestimo values( t.nomeAgencia,
t.numeroConta, t.nomeCliente, -new t.saldo)
update deposito s
set s.saldo=0 where s.numeroConta=t.numeroConta))
last_date timestamp,
last_user text);
Asseres
Predicado que expressa uma condio
que deve ser sempre satisfeita no BD
Exemplo
Um aluno s pode se matricular se no
tiver dbitos pendentes na biblioteca
sintaxe
Asseres
Asseres
Exerccios