Bom agora vou falar sobre os tipos de Constraints;
- Constraint DEFAULT
- Constraint CHECK
- Constraint PRIMARY KEY
- Constraint UNIQUE
- Constraint FOREIGN KEY
Basicamente falando, integridade de dados é a maneira de dizer que os dados que estão na sua base são confiáveis. Existem dois tipos de implementar integridade de dados nos Bancos de Dados: Declarativa e Procedural.
Declarativa diz respeito ao uso das constraints e das rules.
Procedural diz respeito ao uso de Stored Procedures e Triggers. (recomendo que leia este outro tópico sobre Triggers...)
Observações:
- É possível criar uma constraint após a criação da tabela.
- Uma Constraint pode ser definida a nível de coluna ou a nível de tabela.
- Constraints são armazenadas no Dicionário de Dados e podem ser facilmente recuperadas se possuírem nomes razoáveis.
Constraint DEFAULT
Bom Constraint Defaukt ela serve para indicar um valor padrão para um campo, quando o mesmo não for especificado. Exemplo: se a tabela TESTE possui dois campos, COD e NOME, e para o campo NOME existe uma constraint DEFAULT criada, ao inserirmos dados nesta tabela podemos somente fornecer o conteúdo do campo COD, pois o conteúdo do campo NOME será automaticamente preenchido com o valor definido na constraint DEFAULT.
Esta constraint deve ser utilizada para manter integridade de domínio. Também podemos utilizar esta constraint como um objeto independente, assim como as rules. Não podemos criar constraints em campos com o tipo de dados rowversion e campos que possuem uma propriedade IDENTITY definida.
Constraint CHECK
Esta constraint nos permite criar uma regra para o preenchimento de um certo campo em uma tabela. Nesta regra podemos utilizar valores de outros campos da mesma tabela para fazer a validação dos dados. Ou melhor um método para validar a integridade de todos os dados que entram em sua base e Check Constraints é ótimo para garantir todos os dados que entram em seus sistemas através de novas soluções ou interfaces.
As Check Constraints também melhoram o aproveitamento de seu sistema. O gerenciador de banco de dados verifica o cumprimento das Check Constraints no nível mais baixo do sistema operacional e por isso a verificação destas regras tem uma carga de trabalho menor do que teria através de aplicativos.
Esta constraint deve ser utilizada para manter integridade de domínio e integridade referencial.
Esta constraint pode ser desabilitada, para caso de uma grande inserção de dados na tabela.
Constraint PRIMARY KEY
Esta constraint serve para definirmos um ou mais campos como chaves primárias. Uma chave primária é o atributo de um ou mais campos que identifica unicamente um registro em uma tabela. Podemos criar somente uma constraint PRIMARY KEY por tabela e não podemos colocar o valor NULL nos campos que compõem a chave primária.
Esta constraint deve ser utilizada para manter integridade de entidade. Quando esta constraint é criada na tabela, um índice também é automaticamente criado sobre as colunas que fazem parte da chave primária. Este índice não pode ser apagado diretamente, devemos apagar a constraint PRIMARY KEY primeiro.
Observações:
- A Constraint Primary Key é uma combinação das constraints Unique e Not Null.
- Um índice único é automaticamente criado.
Constraint UNIQUE
Esta constraint faz a validação de valores únicos em uma coluna de uma tabela. Se um campo estiver definido com a constraint UNIQUE nenhum valor repetido poderá ser fornecido para esta campo. Diferente da PRIMARY KEY, podemos colocar várias constraints UNIQUE por tabela mas para cada campo que possue uma constraint UNIQUE somente podemos inserir o valor NULL uma vez.
Esta constraint deve ser utilizada para manter integridade de entidade. Quando esta constraint é criada na tabela, um índice também é automaticamente criado sobre a coluna sobre a qual a constraint está definida. Este índice não pode ser apagado diretamente, devemos apagar a constraint UNIQUE primeiro.
Observações:
- Designa uma coluna ou uma combinação de colunas de tal forma que duas linhas não possam ter o mesmo valor.
- Valores nulos são aceitos.
- Automaticamente é criado um índice único para a(s) coluna(s) especificada(s).
Constraint FOREIGN KEY
Esta constraint é utilizada para implementar o conceito de chave estrangeira e serve para indicar que o conteúdo de um campo deve se referenciar a um outro campo que possua ou uma chave primária ou uma constraint UNIQUE.
Quando o campo que está sendo referenciado residir na mesma tabela, não precisamos uitilizar a palavra-chave FOREIGN KEY, podendo somente utilizar REFERENCES. Esta constraint também pode ser desabilitada, para o caso de uma grande inserção de dados na tabela.
Esta constraint deve ser utilizada para manter integridade refencial e podemos ainda programar eventos em cascata utilizando as cláusulas ON DELETE e ON UPDADE.
Observações:
- Estabelece um relacionamento com a chave primária ou única da mesma ou de outra tabela.
- Deve referenciar um valor existente na tabela pai ou ser nulo.
- Chaves estrangeiras são baseadas em dados e são puramente lógicas, isto é, não são ponteiros físicos.
- Uma chave estrangeira, parte de uma chave primária, não pode ser nula pois uma chave primária não pode ser nula, nem parcialmente nula.
- Havendo a cláusula ON DELETE CASCADE, uma deleção na tabela pai causa a deleção das linhas relacionadas na tabela filho.
Bom é isso ai espero que tenha respondido muitas perguntas e o porque haha... e muitos programadores desconhece desse assunto mas entendem muito sem saber o que é esses simples recursos que faz sem saber o nome que é Constraints isso nos Bancos de Dados.
É isso em breve muitos exemplos...