Buscar

regras de negocio 1

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Click to edit Master title style
Click to edit Master subtitle style
*
*
*
Universidade 
Estácio de Sá 
BD-II
Prof.:George Hamilton
BD II George Hamilton
*
*
*
A possibilidade de definir restrições de integridade nos SGBDs ao invés de implementá-las nos programas de aplicação está baseada no conceito não só de compartilhamento de dados, mas também, de códigos de programas. A linguagem SQL3 ou SQL99 prevê que os SGBDs suportem esse compartilhamento através de restrições de integridade declarativas ("constraints"), asserções ("assertions") , procedimentos armazenados ("stored procedures"), gatilhos("triggers") e funções definidas por usuários. 
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Uma restrição de integridade declarativa é uma limitação ou requisito cumprido pelo banco de dados, simples de utilizar porque os projetistas declaram na definição de uma tabela. Os SGBDs diferenciam os seguintes tipos de restrições: verificação de valores sobre um domínio ("check constraint"), chave primária ("primary key"), restrição de valor único ("unique"), integridade referencial ("referential integrity") através de chaves estrangeiras e não nulo ("not null"). 
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
CREATE TABLE DEPARTAMENTO (
 NomeDepart CHAR(18) NOT NULL,
 Localizacao CHAR(15) CHECK (Localização 	IN('SAO PAULO','RIO DE JANEIRO')),
 NumEmp INTEGER,
 Gerente CHAR(6) NOT NULL UNIQUE,
 DataInicGer DATE,
 PRIMARY KEY (NomeDepart) 
 FOREIGN KEY (Gerente) REFERENCES 		 	FUNCIONARIO);
BD II George Hamilton
*
*
*
Integridade referencial também incorpora regras para impor que tipos de manipulações de dados serão permitidas sobre o dado referenciado, e que ações serão realizadas no dado dependente. As regras associadas à integridade referencial podem ser
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Restringir (“Restrict”) - regra que não permite atualizações ou exclusões de dados referenciados;
Alterar para Nulo (“Set to Null”) - quando o dado referenciado é atualizado ou excluído, todos os dados dependentes associados são alterados para nulo;
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Alterar para Valor Default (“Set to Default”) - semelhante ao “Set to Null”, só que os dados dependentes são alterados para um valor estabelecido previamente;
Atualizar em cascata (“Cascade”) - quando o dado referenciado é atualizado, todos os dados dependentes associados são correspondentemente atualizados; quando uma linha referenciada da tabela é excluída, todas as linhas dependentes associadas são excluídas.
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Uma Asserção é basicamente uma restrição semelhante à verificação de valores (“check”). Enquanto que a restrição de verificação é definida explicitamente dentro do comando de criação de uma tabela, uma asserção é definida fora do escopo da definição de uma tabela, podendo ser utilizada para forçar uma restrição que envolve mais de uma tabela. Atualmente, este tipo de restrição não se encontra implementado nos SGBDs comerciais, embora esteja especificado no modelo relacional desde o System R.
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
CREATE ASSERTION INVENTARIO_MAXIMO
	CHECK(( SELECT SUM(custo)
			FROM filmes)
		+ ( SELECT SUM(custo)
			FROM musicas)
		<500000);
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Procedimento Armazenado é um módulo de lógica procedimental mantido, administrado e executado pelo SGBD. 
A razão primária para ser utilizado é mover as regras de negócio da aplicação para o banco de dados. 
Um procedimento armazenado não é fisicamente associado a outro objeto do banco de dados, como os gatilhos de banco de dados, podendo acessar e modificar uma ou mais tabelas. 
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
CREATE PROCEDURE p-excluicliente (idcli IN INTEGER) AS
ultimo CHAR(50);
primeiro CHAR(50);
BEGIN
	SELECT sobrenome,prenome INTO ultimo,primeiro
	FROM cliente WHERE id=idcli;
	INSERT INTO histcli VALUES(idcli,ultimo,primeiro);
	DELETE FROM cliente WHERE id=idcli;
 EXCEPTION
	WHEN NO_DATA_FOUND THEN
		raise_application_error(-20130,'ID de Cliente Inválida');
END p-excluicliente;
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Para que o mecanismo funcione adequadamente, o privilégio para o uso do comando DELETE na tabela CLIENTE deve ser revogado aos usuários e aplicações, de modo que a exclusão na tabela deva ser realizada somente pela chamada ao procedimento armazenado p-excluicliente, que deve ser o privilégio de execução concedido a todos os usuários.
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Gatilhos (“triggers”) são procedimentos especiais dirigidos por eventos, armazenados e executados em um SGBD, vinculados a uma tabela. 
Um gatilho não pode ser invocado diretamente pelo usuário, mas apenas disparado automaticamente pelo SGBD, devido à ocorrência de um evento resultante de uma ação, normalmente, de modificação da tabela associada ao gatilho. 
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
 Atualmente, apenas os eventos de manipulação de banco de dados (inserção, exclusão e alteração) são considerados na especificação dos gatilhos. 
 Outros tipos de eventos, como os temporais e externos, ainda não foram implementados nos SGBDs.
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
CREATE TRIGGER t-excluicliente
BEFORE DELETE ON cliente
FOR EACH ROW
BEGIN
	INSERT INTO histcli VALUES (:old.id,:old.sobrenome,:old.prenome);
END;
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
A diferença básica entre o gatilho t-excluicliente e o procedimento p-excluicliente está na forma de serem invocados, pois o procedimento deve ser chamado explicitamente pelo usuário ou aplicação, enquanto o gatilho é disparado automaticamente, cada vez que for executado o comando DELETE na tabela CLIENTE.
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
O gatilho normalmente é usado para:
 Executar uma ação desejada, prevista na linguagem SQL como ação de restrição de integridade declarativa, do tipo integridade referencial, quando o SGBD utilizado não os suporta. 
Por exemplo, o SGBD Oracle não permite ações de restrição de integridade declarativa para: update CASCADE, update e delete SET NULL, update e delete SET DEFAULT. Daí ser necessário implementá-las como gatilhos;
 Cumprir integridade referencial quando tabelas filha e pai estão em diferentes nós de um banco de dados distribuído;
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
O gatilho normalmente é usado para:
 Prover auditoria sobre manipulações no banco de dados;
Gerar automaticamente valores de colunas derivadas, principalmente quando várias tabelas são utilizadas;
Manter o sincronismo de replicação de tabelas;
Implementar regras de negócio sob forma ativa.
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Uma Função definida pelo usuário computa e retorna um resultado baseado sobre um conjunto de valores de entrada. 
Uma vez definida e criada dentro do SGBD, torna-se disponível para ser utilizada até mesmo em sentenças SQL. 
No exemplo abaixo, a função procuraid retorna o número da identidade (id) do cliente, quando chamada com os parâmetros de entrada de primeiro e último nomes do cliente. O comando SELECT a seguir executa uma chamada à função na cláusula WHERE.
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
CREATE FUNCTION procuraid(primeiro IN CHAR(50), ultimo IN CHAR(50))
RETURN INTEGER AS
idcli INTEGER;
BEGIN
	SELECT id INTO idcli FROM cliente
	WHERE sobrenome=ultimo AND prenome=primeiro;
	RETURN idcli;
EXCEPTION
	WHEN NO_DATA_FOUND THEN
		raise_application_error(-20130,'ID de Cliente Inválida');
END procuraid;
SELECT *
FROM pedidos
WHERE id_cliente=procuraid('Rebeca','Tevia');
Especificação de Regras em Bancos de Dados
BD II George Hamilton
Click to edit Master title style
Click to edit Master subtitle style
*
*
*
SELECT *
FROM pedidos
WHERE id_cliente=procuraid('Rebeca','Tevia');
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Especificação de Regras em Bancos de Dados
BD II George Hamilton
*
*
*
Especificação de Regras em Bancos de Dados
BD II George Hamilton

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando