Baixe o app para aproveitar ainda mais
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
Compartilhar