MODELAGEM E APLICAÇÃO DE REGRAS DE NEGÓCIOS
PARA BANCO DE DADOS RELACIONAL
Márcia Terezinha Tonieto - FLF
Hélio Augusto de Sabóia Moura - FLF
Resumo:
Este trabalho apresenta técnicas aplicadas ao SGBD Relacional para se garantir a
integridade do sistema. A integridade do sistema de Banco de Dados depende muito do projeto
lógico e físico, porém boa parte da segurança fica a cargo da programação e de regras
estabelecidas durante a fase de desenvolvimento, o estabelecimento de regras explícitas no
Banco de Dados utilizando estudos de um Sistema Gerenciador de Banco de Dados Relacional
muito utilizado, principalmente em grandes organizações com alta demanda de informações, o
Oracle 9i ®, ferramenta de programação PL/SQL em um Sistema de Gestão Hospitalar.
Abstract:
This work presents technology applied to the DBMs to support the system rightness.
The integrity of a Database System depends a lot on a logical an physical project, although a
security cam be attributed to the programation an rules determined during the development
stage.
In that context, we analise the applications of a business Roles on a Relational
Database Management System very used, mainly in great organizations with demand very
discharge of information - Oracle 9i ®, besides that tool, a tool of development procedures
PLSQL Procedure Builder , was used in a Hospital Management System.
Palavras Chaves: Regras de negócio, ‘triggers’, metamodelos, segurança, integridade e Banco
de Dados.
Introdução
Nos tempos de hoje, as empresas ganham vantagens competitivas, tomando decisões
eficientes baseadas em informações. Com isso, o grande volume de dados armazenados e a
demanda por acesso a estes têm contribuído para o desenvolvimento de novas terminologias,
conceitos e tecnologias mais eficazes no armazenamento e no resgate dessas informações.
Refletindo sobre esse novo paradigma, surgem as perguntas: ao longo da vida útil do
sistema os usuários são capazes de garantir regras impostas na fase de desenvolvimento do
projeto do sistema? A documentação e o entendimento das mesmas é suficiente para não alterar
determinadas regras que possam ser críticas para a integridade dos dados?
O presente projeto vem divulgar o uso de regras em um Sistema Gerenciador de Banco
de Dados Relacional, com o objetivo de assegurar, através do Banco de dados, que as
especificações de negócios, segurança e integridade de informações, definidas no início do
projeto do sistema ou determinadas ao longo de sua vida útil, devam ser mantidas,
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
71
independentes de implementações ou interferências de usuários, como forma de garantir a
integridade e a propagação dos objetivos do sistema.
Objetivo Geral
Definição de componentes, Metamodelos e Ferramentas de Modelagem de Regras de
Negócios e a verificação dos resultadas da aplicação prática de regras em um banco de dados de
grande porte.
Objetivos Específicos
•Definir regras de negócios, componentes e classificação das mesmas.
•Apresentar os Metamodelos e Ferramentas de Modelagem de Regras de Negócios para
banco de dados relacionais.
•Observar a aplicabilidade prática destes Metamodelos.
•Relatar a experiência da aplicabilidade e resultados das regras em um banco de dados de
grande porte (Oracle 9i ®, Sistema de Gestão Hospitalar).
Justificativa
A vantagem da aplicação de regras de negócios no Banco de Dados não se restringe ao
fato da integridade dos dados. Pelo contrário, há o ganho de performance sobre o trabalho do
programador humano, porque os ‘triggers’ serão disparados a partir de eventos que são
habilitados a avaliar uma gama maior de alternativas do que o programador seria capaz de
fazer. Isso será feito automaticamente em tempo de execução do sistema gerenciador de banco
de dados e o custo será relativamente baixo.
Com o uso de ‘triggers’, eliminar-se-á o esforço manual e repetitivo de identificar e
corrigir comandos e regras mal implementados, pobres em desempenho. O trabalho dos
desenvolvedores de aplicações será facilitado ganhando em produtividade, pois não perderão
tempo com correções e buscas de regras já definidas e controladas pelo banco de dados.
Os clientes ficarão muito satisfeitos, pois suas aplicações terão informações precisas
independentes da ferramenta utilizada para consegui-las.
Regras de Negócio
Definição
Os sistemas de informação abrangem, com freqüência, um grande volume de
conhecimento organizacional formalizado. Tal conhecimento é especificado como regras de
negócio [7], já antes definidas por Bell [10] como sendo “declarações que apresentam a maneira
de como o negócio está sendo feito, além das diretrizes e restrições com respeito a estados e
processos em uma organização”.
Surge com isso a necessidade de se modelar regras de negócio, enfatizando a sua
importância em um esquema conceitual, que representa todas as regras que governam o
universo de discussão [12] devendo estar definidas dentro de um esquema conceitual. A partir
desta necessidade, tais regras de negócio têm sido amplamente utilizadas pelas organizações
como forma de melhorar a qualidade de seus sistemas.
72
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
Atualmente, os SGBDs têm a capacidade de executar ações através do uso de regras
ativas baseadas no paradigma Evento-Condição-Ação (ECA)[12]. O componente "Evento"
indica o momento do disparo da regra, a "Condição" indica um predicado a ser avaliado e a
"Ação" o que tem de ser feito, caso a condição seja válida. Estes mecanismos ativos,
denominados gatilhos (triggers) em bancos de dados, proporcionam uma funcionalidade aos
SGBDs, cuja principal aplicação tem sido a manutenção de integridade e restrições de acesso
aos bancos de dados. Desde que devidamente especificadas no esquema conceitual, regras de
negócio podem ser implementadas com o paradigma ECA, ampliando a sua aplicação a
problemas do mundo real.
Componentes das Regras Ativas
Para a especificação de regras ativas e de modo a apresentar a importância prática do
paradigma ECA, os componentes evento, Condição e Ação merecem um interesse especial por
sua riqueza semântica e sua complexidade detalhadas a seguir:
Componente Evento: O Evento é o componente disparador da regra. Álgebras de
eventos, como, por exemplo, as usadas nos sistemas Snoop (linguagem de especificação para
SGBDs ativos) e SAMOS (Swiss Active Mechanism Based Object-Oriented Database System)
foram propostas para formalizar o conceito de evento.
A álgebra de evento Snoop é uma linguagem de especificação para SGBDs ativos
desenvolvida na Universidade da Flórida, EUA [5]. Um evento em Snoop é definido como uma
ocorrência atômica de uma operação no banco de dados, uma ação externa explícita ou um fato
temporal.
Figura 1 - Classificação de Eventos Snoop
Eventos podem ser compostos através de operadores lógicos como conjunção, disjunção
ou seqüência, resultando em ocorrências atômicas. A álgebra de eventos SAMOS foi
desenvolvida na Universidade de Zurich, Suíça, utilizando como base o SGBD Orientado a
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
73
Objeto (SGBDOO) ObjectStore. Semelhantemente ao Snoop, os eventos propostos por SAMOS
são simples ou compostos, com pequenas diferenças quanto à classificação dos eventos simples
e quanto aos operadores de eventos compostos.
•Componente Condição: Condições das regras podem ser classificadas de acordo com os
tipos de restrições de integridade.
À semelhança do evento, o componente Condição pode ser simples e composto [9].
Condições simples são predicados atômicos aplicados sobre o estado corrente do banco de
dados, podendo incluir operadores booleanos unários tal como NOT.
Condições compostas resultam da aplicação dos operadores booleanos binários AND ou OR em
condições simples ou compostas.
•Componente Ação: Para o componente ação das regras ativas, foram propostas várias
classificações, dependendo da natureza das operações que executam (operações de
banco de dados ou das aplicações). De forma semelhante aos componentes Evento e
Condição, as ações também podem ser classificadas em ações simples e compostas.
Ação simples consiste em exatamente uma operação que não seja refinada posteriormente.
Ação composta é uma sucessão de algumas operações a serem executadas.
Classificação das Regras de Negócio
De forma genérica, regras de negócio, sob forma de regras ativas, podem ser
classificadas em dois tipos [11]:
•Regras de Integridade: representam a semântica das restrições de integridade, que são
estendidas tornando explícito o disparo de eventos e a reação sobre uma violação de
restrição. Exemplo:
ON (estoque de produto atualizado)
IF (novo estoque < 0)
THEN emitir mensagem de erro
“O estoque não pode ser menor que zero”
•Regras de Automatização: descrevem a lógica de execução de uma tarefa; assim, a
violação da condição não tem a semântica de um erro. Exemplo:
ON (estoque de produto atualizado)
IF (novo estoque < limite para pedido de reposição)
THEN fazer um pedido do produto.
Metamodelos e Ferramentas de Modelagem de Regras de Negócio
Definição
Os modelos são um dispositivo de abstração e devem ser suficientemente poderosos
para fornecer alguma compreensão dos objetos do nosso mundo e como eles se relacionam. Os
modelos não são somente utilizados para facilitar a compreensão humana e aumentar o número
de detalhes, mas, quando estes são automatizados, definem a nossa realidade.
Os conceitos de metamodelos não são novos. Este modelo conceitual cresceu nos
últimos anos, principalmente, pelo crescimento da Internet, Intranet e, a utilização e o
74
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
surgimento de novas ferramentas CASE ( Computer-Aided Software Engineering), –
Ferramenta ou conjunto de ferramentas que automatizam tarefas que compõem o processo de
desenvolvimento de software
O motivo principal deste crescimento foi a necessidade de integração dos dados na
etapa de desenvolvimento de software. E, com destaque para as ferramentas CASE. Estas
necessitam que os metamodelos sejam dinâmicos, ou seja, que o usuário possa configurar o
metamodelo de acordo com as suas necessidades.
A abordagem convencional para a modelagem é descrita por meio de níveis de
detalhamento conforme a figura 2. Um metamodelo é um modelo que define outros modelos, ou
seja, modelo de informação para informações que podem ser expressas durante a modelagem.
No nível modelo temos a coleção de artifícios (diagramas, tabelas, descrições etc.) montados
durante a modelagem de um sistema. Cada nível da figura 3 determina a maneira como o nível
inferior será expresso. A figura 2 descreve cada nível de modelagem como um grupo
distintamente separado porque é assim que os níveis tipicamente são desenvolvidos e aplicados.
Na prática, com freqüência, a modelagem é executada com a abordagem "de cima para baixo".
Metamodelo
Modelo
Dados e Processos
Figura 2 - Níveis de modelagem convencional
Os metamodelos vão conter o nível mais amplo das regras de negócios que vão definir a
modelagem de um sistema, é através de metamodelos que as organizações definem suas regras
de negócios, que de algum modo definem ou restringem políticas e práticas de ações.
A seguir serão descritos metamodelos reportados na literatura bem como ferramentas de
modelagem conceitual com especificação de regras de negócio: o BROCOM (Business Rule
Oriented Conceptual Modeling), desenvolvido na Universidade de Bern, Suíça [ 9 ]; o RIM Rechnergestütztes InformationsManagement (gerência de informação baseado em computador),
desenvolvido pelo Instituto de Sistemas de Informação, da Universidade de St. Gall, Alemanha;
e o (ER)2, proposto em e desenvolvido no Instituto Militar de Engenharia, Rio de Janeiro,
Brasil [5, 6].
A tabela abaixo apresenta uma análise comparativa desses metamodelos, a partir dos
seguintes critérios: os componentes do metamodelo como objetos do universo de discussão e os
fatos organizacionais no metamodelo que abrange tipos de metaclasses que são relevantes e
estão relacionadas com as regras de negócio.
Os metamodelos apresentados contemplam apenas modelos tipicamente relacionais.
Nestes modelos existe efetivamente uma carência de componentes que permitam projetar regras
de negócio incluindo a parte dinâmica com o controle interno do objeto, e em particular para
SGBDR.
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
75
Comparação dos metamodelos
Metamodelo
BROM
RIM
(ER)2
Modelo de
Componentes ativos
Componente
dados
Evento
Condição
Ação
Processo
Simples e Compostos
Condição
Ação
Especificado por
Entidade
Regra de Negócio
Relacionamento
Entidade
Eventos de Negócios Restrições de Função de Especificado por
Relacionamento Associados a Funções integridade
Negócios Função de Negócio
de Negócios
implícitas
Evento de Banco de Condição e Ação são partes
Ausente
Entidade
Dados
do componente Regra
Relacionamento
Figura 3 - Comparação do metamodelos BROM RIM (ER)2
Ferramentas de Modelagem de Regras de Negócio.
Abaixo estão ilustradas as ferramentas de modelagem associada aos metamodelos
descritos.
Modelo (ER)2 - (Entidade-Relacionamento-Evento-Regra) incorpora ao Modelo
Entidade-Relacionamento a especificação de regras e eventos, como objetos de primeira classe,
para a modelagem de banco de dados ativos. As regras e os eventos passam a fazer parte do
modelo, com a notação gráfica e identificação própria. Em um diagrama (ER)2, um evento é
representado por um círculo e uma regra por um paralelogramo. As conexões entre eventos e
regras são intuitivas.
(ER)2 - Entidade ou
Relacionamento
“Afetado por”
Evento
“Dispara”
Regra
“Causa”
Evento
Evento
“Dispara”
Entidade ou
Relacionamento
Regra
Figura 4 - Esquema do metamodelo (ER)2
76
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
Modelo Evento-Condição-Ação-se-Ação-senão (ECA2): Redes de Petri são modelos
formais para especificar o fluxo de controle em um sistema. A rede ECA2, resultante da
aplicação desses símbolos, é também uma Rede de Petri de alto nível que pretende representar
exatamente o comportamento de um sistema e pode ser empregado como base para a simulação
dos processos.
“Triggering”
Evento (s)
Condição
Se
Ação
Senão
Ação
Origina
Evento(s)
Figura 5 - Esquema do metamodelo (ECA2)
Modelo de Processamento Conceitual - CPM: A metodologia Merise: An Information System
Design and Development Methodology, in: Information & Management emprega o Modelo de
Processamento Conceitual (CPM – Conceptual Processing Model) para a especificação de
processos. Este modelo abrange eventos de ativação, operações (sincronizadas), e eventos
resultantes. Uma operação consiste em uma ou mais tarefas que estão baseadas no
gerenciamento de regras e são executadas seqüencialmente. Em CPM, um evento é visto como
um portador de propriedades, que correspondem aos atributos no modelo de dados do Merise.
Evento
Evento
Operação
...
Operação m
Resultado 1
Evento
Resultado n
Evento
Evento
Figura 6 - Esquema do metamodelo CPM
O Paradigma Evento-Condição-Ação-se-Ação-senão
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
77
O Modelo Evento-Condição-Ação-se-Ação-senão (ECA2) é tido como paradigma de
modelo de criação de regras de negócios normalmente utilizados por SGBDS. Os SGBS que
utilizam este modelo de regras de negócios são conhecidos como ativos ( reativos ) , pois
possuem a capacidade de detectar a ocorrência de eventos, e executar funções independentes de
solicitação explícita. Onde :
Evento: situação específica que ocorre na base de dados.
Condição: regra de negócio forçada.
Ação: procedimento que implementa uma lógica de processamento.
Normalmente nos SGBDS comerciais este modelo de formalização de regras de
negócios é representado na forma de triggers, que é um tipo de stored procedure (procedimento
armazenado no banco de dados), que é disparado em uma base controlada a evento.
Triggers de banco de dados
Definição
Triggers são blocos PL/SQL nomeados com seções declarativas, executável e de
tratamento de exceções. Os triggers devem ser armazenados na base de dados como objetos
independentes e não podem ser locais a um bloco ou pacote. Ao contrário de procedures
(subprogramas que executam uma ou mais transações sobre dados, e podem ser armazenados
locais, em bibliotecas-conjuntos de subprogramas ou no banco de dados) e funções
(subprogramas retornam uma única informação, e podem ser armazenados locais, em
bibliotecas-conjuntos de subprogramas ou no banco de dados), que são executadas
explicitamente a partir de um outro bloco via uma chamada de procedure que também passa um
argumento, os triggers são executados implicitamente sempre que o acontecimento/ evento
desencadeador de ‘trigerring’ suceder e não aceita argumentos. O ato de executar um trigger é
conhecido como disparar o trigger. O evento desencadeador pode ser uma operação DML
(INSERT, UPDATE, ou DELETE) em uma tabela de base de dados ou certos tipos de visões.
O banco de Dados Oracle 9i estendeu essa funcionalidade permitindo que os triggers sejam
acionados por um evento de sistema como inicialização ou desativação de banco de dados ou
certos tipos de operações DDL. [14]
Os triggers podem ser utilizados para muitas operações, incluindo:
•Manter restrições complexas de integridade que não são possíveis por meio de restrições
declarativas ativas na criação da tabela (integridade de domínio, integridade de atributos
e integridade referencial).
•Fazer a auditoria das informações de uma tabela, registrando as alterações efetuadas e
quem as efetuou.
•Sinalizar automaticamente a outros programas que é necessário efetuar uma ação, quando
são efetuadas alterações numa tabela.
•Publicar informações sobre vários eventos em um ambiente de publicação-assinatura.
•Segurança sobre a base de dados, e ação de usuários, verificando quando uma operação é
realizada sobre uma entidade, o trigger é disparado para verificar as permissões do
usuário.
78
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
Sintaxe geral para criar um trigger
Independente do tipo, todos os triggers são criados utilizando a mesma sintaxe.
CREATE [ OR REPLACE ] TRIGGER nome_do_trigger
{ BEFORE | AFTER | INSTEAD-OF } evento desencadeador
[cláusula referência]
[WHEN condição_de_trigger]
[ FOR EACH ROW ]
corpo_trigger,
nome_do_trigger – é o nome do trigger. Os nome dos triggers são identificadores de
base de dados e, como tal, seguem as mesmas regras que outros identificadores. Embora
possível, não é recomendável dar ao trigger o mesmo nome de uma tabela.
evento desencadeador – especifíca evento que aciona o trigger ( possivelmente
incluindo uma tabela ou visão específica)
corpo_do_trigger - é o código principal do trigger
cláusula referência - é utilizada para referir-se aos dados na linha que atualmente está
sendo modificada por um nome diferente.
Condição_de_trigger - é a cláusula WHEN – opcional (se existir é avaliada em primeiro
lugar). O corpo do trigger só é executado quando esta condição resulta TRUE.
Tipos de triggers
Há três tipos principais de triggers: DML, insted-of e triggers de sistema (DDL).
Triggers DML
Um trigger de DML é acionado por uma instrução de DML e o tipo de instrução
determina o tipo do trigger de DML. Os triggers de DML podem ser definidos em operações
INSERT, UPDATE, ou DELETE. Eles podem ser acionados antes ou depois da operação, e
também podem acionar operações de linha em instruções.
Um trigger DML é acionado em uma operação INSERT, UPDATE ou DELETE de uma
tabela de dados. Ele pode ser acionado antes ou depois que a instrução é executada e pode ser
acionado uma vez por linha problemática ou uma vez por instrução. A combinação desses
fatores determina o tipo de trigger. Há um total de 12 possíveis tipos: 3 instruções X 2
sincronizações X 2 níveis. Por exemplo, todos os seguintes são tipos válidos de trigger de
DML:
•Antes do nível da instrução UPDATE
•Depois do nível da linha INSERT
•Antes do nível da linha DELETE
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
79
A tabela a seguir resume as várias opções. Um trigger também pode ser acionado para
mais de um tipo de instrução DML em dada tabela – por exemplo, INSERT e UPDATE.
Qualquer código no trigger será executado junto com a própria instrução desencadeadora como
parte da mesma transação
Categoria
Instrução
Sincronização
Valores
INSERT, DELETE
Ou UPDATE
BEFORE ou AFTER
Nível
Linha de Instrução
Comentários
Define que tipo de instrução de DML faz com que o trigger
seja acionado.
Define se o trigger é acionado antes ou depois que a
instrução executada.
Se o trigger for um trigger de nível de linha, ele é acionado
uma vez para cada linha afetada pela instrução
desencadeadora. Se o trigger for um trigger de nível de
instrução ele é acionado uma vez tanto antes como depois da
instrução. Um trigger de nível de linha é identificado pela
cláusula FOR EACH ROW na definição do trigger.
Figura 7 - Instruções desencadeadoras e ação dos triggers
Ordem de disparo de um trigger de DML
Os triggers são acionados à medida que a instrução de DML é executada. O algoritmo
para executar uma instrução de DML é:
1.Execute os triggers antes do nível de instrução, se presente.
2.Para cada linha afetada pela instrução:
2.1 Execute os triggers antes do nível de linha, se presente
2.2 Execute a própria instrução.
2.3 Execute os triggers depois do nível de linha, se presente.
3. Execute os triggers depois do nível de linha, se presente.
Identificador de correlação em triggers de nível e de linha
Instrução
Old
New
desencadeadora
Indefinido, todos os campos são Valores que serão inseridos quando a instrução
INSERT
NULL
for concluída.
Valores originais da linha antes daNovos valores que serão atualizados quando a
UPDATE
atualização
instrução for concluída.
Valores originais antes de a linha Indefinido – todos os campos são NULL
DELETE
ser excluída
Figura 8 - Valores das linhas afetadas antes e depois da ação do trigger
Triggers insted-of
Os triggers insted-of podem ser definidos apenas em visões (tanto de objeto como
relacional). Diferente de um trigger de DML, o qual é executado além da operação de DML, o
80
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
trigger insted-of será executado em vez da instrução de DML que o acionou. Triggers insted-of
devem ser de linha.
Diferente dos triggers de DML, os quais são acionados além de uma operação de
INSERT, UPDATE ou de DELETE ( tanto antes como depois deles), os triggers insted-of são
acionados em uma operação DML. Além disso, os triggers insted-of podem ser definidos apenas
em visões, ao passo que os triggers de DML são definidos em tabelas. Os triggers insted-of são
utilizados em dois casos:
•Para permitir que uma visão, que caso contrário não poderia ser modificada, seja
modificada.
•Para modificar as colunas de uma tabela aninhada em uma visão.
Triggers de sistema
Um trigger de sistema é acionado quando um evento de sistema como uma inicialização
ou desativação de banco de dados ocorrer, em vez de em uma operação DML em uma tabela.
Um trigger de sistema também pode ser acionado em operações de DDL como a criação de uma
tabela.
Triggers são objetos de banco de dados e como tais estão registrados no Dicionário de
dados. A visão user_triggers contém todas as informações sobre os triggers do banco em uso.
Quando um trigger é criado, seu código-fonte é armazenado na visão user triggers. Esta
visão inclui o corpo do trigger, a cláusula WHEN, a tabela desencadeadora e o tipo de trigger. A
seguir a estrutura da visão user_triggers
user_triggers;
Column Name
Null?
Type
------------------------------------------------------------- -----TRIGGER_NAME
VARCHAR2(30)
TRIGGER_TYPE
VARCHAR2(16)
TRIGGERING_EVENT
VARCHAR2(216)
TABLE_OWNER
VARCHAR2(30)
BASE_OBJECT_TYPE
VARCHAR2(16)
TABLE_NAME
VARCHAR2(30)
COLUMN_NAME
VARCHAR2(4000)
REFERENCING_NAMES
VARCHAR2(128)
WHEN_CLAUSE
VARCHAR2(4000)
STATUS
VARCHAR2(8)
DESCRIPTION
VARCHAR2(4000)
ACTION_TYPE
VARCHAR2(11)
TRIGGER_BODY
LONG
Os triggers devem ser compilados pelo banco para serem objetos ‘válidos’ e devem ser
habilitados ‘ENABLED’, para serem ativados. Triggers podem ser desabilitados ‘DISABLED’
temporariamente sem excluí-los do banco de dados, e reativados posteriormente.
Não há limite para o número de triggers para cada tabela ou visão de dados, a ordem de
disparo será dada pelo evento desencadeador. No Oracle 9i ® não há como em outros bancos de
dados a numeração seqüencial identificadora da ordem de execução de cada trigger.
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
81
O DBA (já definido anteriormente) fará uso de triggers de Banco de Dados sempre que
este recurso representar qualquer ganho ao sistema.
Descartando e desativando triggers
Semelhantes a outros objetos de banco de dados os triggers podem ser descartados. O
comando para fazer isto tem a sintaxe:
DROP TRIGGER nome_do_trigger
Onde nome_do_trigger é o nome do trigger a ser descartado. Isso remove
permanentemente o trigger do dicionário de dados. Triggers também podem ser desativados sem
ser descartado. Para desativar ou ativar um trigger usa-se a instrução:
ALTER TRIGGER nome_do_trigger| {DISABLE | ENABLE};
Onde nome_do_trigger é o nome do trigger a ser ativado/desativado. Todos os triggers
por padrão são criados ativados. Desativar um trigger não o remove do dicionário de dados.
Triggers como qualquer subprograma armazenado dever ter seu código compilado. A
execução de um trigger não compilado desencadeará a compilação do mesmo, que só será
executado se o mesmo não apresentar erro em tempo de compilação.
Conclusão
Os triggers são uma adição valiosa aos Bancos de Dados. Eles podem ser utilizados para
impor restrições de dados que são muito mais complexas do que restrições referenciais normais
de integridade.
Com a evolução dos triggers e a capacidade de estender a ação destes para além de
eventos de operações DML em uma tabela ou visão possibilitou ainda mais a aplicação de
regras de integridade aos Bancos de Dados, além de vantagens como:
• Reduzir o tráfico de rede.
• Criar um conjunto comum de regras de negócios no banco de dados que se aplicará a
todas as aplicações cliente, independente da ação do usuário, seja este programador ou
usuário do aplicativo. Garantido:
§ controle de integridade: - integridade de domínio.
- integridade de atributos.
- integridade referencial.
§ segurança: - situações importantes de segurança sobre a base de dados. Quando
uma operação é realizada sobre uma entidade, o trigger é disparado para
verificar as permissões do usuário.
§ auditoria: - incluir registros em tabelas de auditoria
- registrar todas as informações sobre tabelas importantes do
sistema.
• Fornecer rotinas comuns que estarão disponíveis para todas as aplicações cliente
reduzindo assim o tempo de desenvolvimento e manutenção, bem como a garantia da
aplicação correta destas rotinas e a confiabilidade dos resultados fornecidos pelas
mesmas.
82
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
• Centralizar o processamento no servidor e reduzir os requisitos de hardware nas ações
cliente.
• Aumentar a performance das aplicações.
Como exemplo prático aplicado ao módulo de controle de estoque, citamos o exemplo
de um trigger de banco de dados, disparado sobre a tabela de cadastro de materiais, sempre que
um usuário fizer uma tentativa de modificar a unidade de medida de um item. O evento alterar,
a coluna ‘unidade de medida’ acionará o trigger, impedindo que tal mudança seja concluída.
Não existe regra de integridade referencial que possa impedir tal ação, também não há como
confiar no usuário programador que o mesmo garanta este controle em nível de aplicativo.
Agora imaginemos uma situação em que não haveria este controle seguro e um produto que
usualmente se estocava e controla por mililitro (ml) seja alterado inadvertidamente por litro (l).
Tais erros podem ocorrer em Bancos de Dados, cuja segurança de informações não é
corretamente administrada e como erro, neste caso, teríamos para este produto a informação da
quantidade de estoque mil vezes maior.
A evolução dos bancos de dados tende a assegurar sempre mais a integridade dos
mesmos, bem como, permitir que a evolução ou mudança no aplicativo não comprometa o
projeto inicial, com isso cada vez mais os projetistas e DBAs utilizam triggers de Banco de
Dados para garantir a aplicabilidade das regras de negócios. O correto uso e o melhor proveito
da tecnologia, no entanto, sempre ficará a cargo do conhecimento e aplicação correta desta
tecnologia pelo ser humano.
Referências Bibliográficas:
[1] DATE, C. J. Introdução a Sistemas de Bancos de Dados. Rio de Janeiro: Campus, 1991.
[2] BANCO DE DADOS I. 1997. Texto para Disciplina Código: INE 5323. Internet.
http://www.inf.ufsc.br/~ronaldo/ine5323/ine5323.html – 01 Maio 2000.
[3] SILBERSCHATZ, Abranham; KORTH, Henry F. Sistema de Banco de Dados. São Paulo:
MAKRON Books 1995.
[4] SILBERSCHATZ, Abranham; KORTH, Henry F. e SUDARSHAN, S. Sistema de Banco
de Dados. São Paulo: MAKRON Books, 1999.
[5] AMORIM, M. J. Ambiente de Desenvolvimento de Aplicações de Banco de Dados
Ativos, Tese de Mestrado, IME, Rio de Janeiro, 1998.
[6] COSTA, A. Engenharia Reversa de Regras Ativas em Banco de Dados Relacionais,
Tese de Mestrado, IME, Rio de Janeiro, 1997.
[7] APPLETON, D.S. Business Reengineering with Business Rules, in: V. Grover, W.J.
Kettinger(Eds.), Business Process Change – Reengineering Concepts, Methods and
Tecnologies, Londres, Harrisburg, 1995.
[8] MAYER & Bunge Informática S/C Ltda. Otimizando Banco de Dados Relacionais,
Internet, 2000.
[9] HERBEST, H. Business Rule-Oriented Conceptual Modeling, Physica-Verlag: A
Springer-Verlag Company, Switzerland, 1996.
[10] BELL, J. Et al. Re-Engineering Case Study – Analysis of Business Rules and
Recomendations for Treatment of Rules in a Relational Database Environment, Bellevue
Golden: US West Information Technologies Group, 1990.
Rev. Cient. Fac. Lourenço Filho - v.3, n.1, 2003
83
[11] BOOCH, G.; RUMBAUGHR, J.; JACOBSON, I. The Unified Modeling Language for
Object-Oriented Development, Documentation Set Version, 1997.
[12] LOUCOPOULOS, P. Conceptual Modeling, in: P. Loucopoulos, Conceptual Modeling,
Databases, and CASE - New York et. al.: John Wiley & Sons, 1992.
[13] LONEY, K.; THERIAULT, M. Oracele 9i O Manual do DBA . Rio de Janeiro: Campus,
2002.
[14] URMAN, S. Oracle 9i Programação PL/SQL. Rio de Janeiro: Campus, 2002.
Download

MODELAGEM E APLICAÇÃO DE REGRAS DE NEGÓCIOS