Beruflich Dokumente
Kultur Dokumente
Restrio de integridade
TRIGGER e SEGURANA
Uma regra que deve ser obedecida por todos estados da base de dados que so considerados consistentes. Especificao do maior nmero possvel de restries de integridade: possvel evitar que o usurio leve a base de dados inadvertidamente a um estado inconsistente.
Page 1
1
CHECK CONSTRAINT
Especificao declarativa de uma expresso booleana que deve ser verdadeira para todas linhas de uma tabela (valores de uma coluna) Mesma sintaxe da clusula WHERE do SELECT Exemplo: ALTER TABLE Cliente ADD CONSTRAINT ValidaCampos CHECK (TipoCli=Pessoa Fsica AND CIC IS NOT NULL AND CGC IS NULL) OR (TipoCli=Pessoa Jurdica AND CIC IS NULL AND CGC IS NOT NULL)
ASSERTION
Especificao declarativa de uma expresso booleana que deve ser verdadeira para toda a base de dados (pode envolver vrias tabelas) CREATE ASSERTION ValidaSalario (NOT EXISTS SELECT * FROM emp WHERE emp.sal< (SELECT sal FROM WHERE emp AS ger ger.cod_emp=emp.cod_emp_ger)
TRIGGER
Stored procedure que executada automaticamente quando da atualizao de uma tabela Pode ser usado para: Atualizaes em cascata Verificao de restries de integridade que no podem ser verificadas pelas restries implcitas nem pela clusula CHECK
10
Trigger
Um trigger contm trs partes: evento (p.ex., atualizar um campo) condio (p.ex.., uma consulta que faz um teste) ao (p.ex., excluso, incluso,, RAISEERROR) Quando o evento ocorre, 1. Sistema testa condio e 2. Executa ao Observao: triggers podem ter efeitos em cascata Fornecedores de SGBD no esperaram os padres
Opes de Trigger
Eventos possveis incluem INSERT ON table DELETE ON table UPDATE [OF column] ON table INSTEAD OF Trigger pode ser ativado por FOR EACH ROW Ao executada para cada linha modificada FOR EACH STATEMENT Ao executada uma vez somente para todas linhas modificadas pela operao Ao de modificao pode ser executada AFTER ou BEFORE o evento (normalmente antes)
11 12
Page 2
2
FOR EACH ROW WHEN (OldTuple.preco > NewTuple.preco) UPDATE SET WHERE Produto nome = NewTuple.nome preco = OldTuple.preco
Todos produtos com o mesmo so atualizados quando um deles atualizado Exemplo de tratamento de redundncia
13 14
17
18
Page 3
3
19
20
Criao de Usurios
No Oracle o usurio DBA o SYSTEM e a senha default MANAGER. Para criar usurio utilize o seguinte comando: CREATE USER NOME_USUARIO IDENTIFIED BY SENHA_USUARIO; OBS: PODE SER UTILIZADO A FERRAMENTA ENTRERPISE CONSOLE OU DBA STUDIO DA ORCALE.
Segurana em SQL
SQL possui uma instruo na forma: GRANT <lista de privilgios> ON <nome de tabela ou viso> TO <lista de usurios> A <lista de privilgios> permite especificar os seguintes tipos de privilgios: RESOURCE Especifica que o usurio pode criar tabelas e vises SELECT Especifica que o usurio pode ler os dados das tabelas ou vises listadas
21
22
23
24
Page 4
4
AUDITORIA DE DADOS
Para auditar informaes em um banco de dados pode-se utilizar ferramentas de terceiros (como a prpria auditoria fornecida por alguns SGBD) ou podemos construir a nossa prpria auditoria. A seguir veremos 2 maneiras de construir auditoria de dados nos Banco de Dados utilizados pelas aplicaes.
25
26
1 2 3
28
Com as colunas que acrescentamos na tabela empregado podemos descobrir que o usurio PAULO inseriu a informao do empregado Joo e alterou as informaes do empregado Maria, tambm sabemos que o usurio JOS inseriu as informaes do empregado Maria e excluiu o empregado Pedro. Em todas estes informaes sabemos a data e o horrio que foi feito, porm no temos como saber quantas vezes j foram alterados os dados do empregado Maria, sabemos que o ltimo que fez a alterao foi o usurio PAULO. Com estas colunas temos vrias informaes, porm no temos a histria das atualizaes realizadas.
29
30
Page 5
5
DATA
10/08/2004 11:00
OPERACAO
I
USUARIO
PAULO
DADOS
(MEMO)
EMPREGADO
10/10/2004 13:45
JOS
(MEMO)
EMPREGADO
15/10/2004 14:00
ELIZA
(MEMO)
EMPREGADO
12/10/2004 15:00
PAULO
(MEMO)
EMPREGADO
16/10/2004 10:00
JOS
(MEMO)
Com a tabela AUDITORIA podemos descobrir que o usurio PAULO inseriu a informao do empregado Joo e alterou as informaes do empregado Maria, tambm sabemos que o usurio JOS inseriu as informaes do empregado Maria e excluiu o empregado Pedro. Em todas estes informaes sabemos a data e o horrio que foi feito. Tambm teremos como saber quantas vezes j foram alterados os dados do empregado pois assim temos a histria de todas as atualizaes realizadas. 31
Referncia Bibliogrfica
HEUSER, Carlos Alberto. Projeto de Banco de Dados. 4 Edio. Ed. Sagra, 2001. Captulo: Restries de Integridade. FERNANDES, Lcia. Oracle 9i para desenvolvedores : Oracle developer 6i curso completo. Rio de Janeiro : Axcel Books, 2002. 1614 p.
33
Page 6
6