9. Trabalhando com constraints e integridade referencial

Nesse capítulo abordaremos de forma mais detalhada o uso de constraints dentro de objetos do banco de dados. Veremos também, mais detalhadamente, como funciona a característica de integridade referencial presente em bancos de dados relacionais, como o InterBase e o Firebird.

Uso de constraints ajuda a validar os dados que são inseridos e alterados dentro das tabelas do banco. Com o auxilio da integridade referencial, garantimos a integridade das informações, principalmente às relacionadas entre duas ou mais tabelas do banco de dados.

Definindo Constraints

Como vimos em capítulos anteriores, podemos definir constraints tanto para Domains como para Tables. Normalmente o desenvolvedor faz as validações dos dados diretamente no cliente, antes de ser enviada para o banco de dados. Utilizando constraints, temos mais uma camada de validação e segurança para garantir que os dados que serão gravados, estão de acordo com as regras de negócio especificadas.

Utilizando Constraints em Domains

Através da instrução Check, podemos definir constraints de validação para os Domains criados no banco de dados. Todas as tabelas que utilizar esse Domain, automaticamente será validada pela constraint definida no Domain.

Uma grande vantagem de definir constraints em Domains, ao invés de fazê-la diretamente na coluna da tabela, é que caso algum alteração seja necessária na constraint, ao aplicarmos a alteração, automaticamente todas as colunas definidas com o Domain passam a utilizar a constraint alterada.

Nota: Caso essa constraint fizer referência a várias colunas das tabelas do banco de dados, a alteração precisará ser feita em todas elas individualmente, exigindo mais tempo de trabalho e aumentando as chances de “furos” nas validações do banco de dados.

Exemplo de uso de constraints em Domains utilizando a restrição Check:

 

CREATE DOMAIN IDADE AS SMALLINT NOT NULL CHECK (VALUE BETWEEN 0 AND 130);

 

No Domain Idade, fazemos a validação de seu valor, verificando se mesmo encontra-se dentro da faixa de 0 a 130.

 

CREATE DOMAIN DATA_VENCIMENTO AS DATE CHECK (VALUE >= 'TODAY');

 

No Domain Data_Vencimento, fazemos a validação verificando se seu valor é maior ou igual a data corrente.

 

...

Quer ler esse conteúdo completo? Tenha acesso completo