Nesta parte, veremos os conceitos sobre integridade e consistência de dados e os conceitos e exemplos práticos com a constraint Primary Key. Acompanhem:

Integridade e Consistência de Dados – Para que um sistema de banco de dados sempre possa fornecer informações confiáveis aos usuários, o administrador deve filtrar algumas ações realizadas a fim de evitar a ocorrência de possíveis erros relacionados às mesmas.

Além disso, esse sistema deve ser capaz de receber informações de forma constante sem ter que sofrer alterações com a mesma freqüência.

O banco de dados deve possibilitar a inserção de uma grande quantidade de dados sem que o mesmo precise ser alterado em sua estrutura.

Diferentes tipos de integridade podem ser estabelecidos quando é definida uma relação entre tabelas por meio das chaves primárias e estrangeiras (e outros tipos de chaves que irei descrever mais adiante).

NULL / NOT NULL – NULL (o mesmo que nulo) determina que uma coluna não deva receber nenhum valor, enquanto NOT NULL (não nulo) indica que uma coluna deverá sempre receber um valor no momento em que uma linha é acrescentada. Veja o exemplo a seguir:


No exemplo acima, temos três valores que não permitem valores nulos e dois que permitem nulos, que são os campos pra Cpf/Cnpj do cliente e pra Telefone. Crie a tabela Vendas e insira os registros abaixo, pois iremos usá-la mais a frente:


Constraints – Constraints são objetos usados com a finalidade de estabelecer regras referentes à integridade e à consistência nas colunas das tabelas pertencentes a um sistema de banco de dados. Isso é importante porque para planejar e criar tabelas devemos garantir a integridade dos dados presentes nas colunas e identificar os valores válidos para tais dados.

Com o objetivo de assegurar a integridade dos dados de uma tabela, o SQL Server nos oferece cinco tipos diferentes de constraints, os quais estão relacionados a cinco tipos de integridades. Veja na tabela abaixo os cinco tipos de constraints e os respectivos tipos de integridade:

Tipos de integridade

Tipos de constraint

Chave Primária

Constraint Primary Key

Chave Estrangeira

Constraint Foreign Key e Constraint References

Chave Primária Secundária ou Chave Únicas

Constraint Unique

Regras de Validação

Constraint Check

Valor Padrão

Constraint Default

Veja agora a explicação de cada uma das constraints e o uso prático em exemplos:

Chaves Primárias – Geralmente, as tabelas possuem uma coluna contendo valores capazes de identificar uma linha de forma exclusiva. Essa coluna recebe o nome de chave primária, também conhecida como Primary Key, cuja finalidade é assegurar a integridade dos dados da tabela.

A chave primária pode ser gerada no momento da criação ou da alteração da tabela, bastando para isso definir uma constraint Primary Key. É importante ter em mente que cada tabela pode conter apenas uma constraint Primary Key, sendo que a coluna que a representa não pode aceitar valores nulos. Este tipo de constraint é capaz de assegurar que os dados sejam únicos e exclusivos, portanto, é comum que a coluna que a representa seja chamada de coluna de identidade.

O Database Engine é o responsável por assegurar a exclusividade dos dados quando usamos a constraint Primary Key. Para tanto, ele cria um índice único para as colunas relacionadas à chave primária, o qual possibilita acessar os dados de forma rápida nas situações em que são realizadas consultas por meio dessas chaves.

Há situações em que a constraint Primary Key é definida em várias colunas. Quando isso ocorre, é possível que haja valores duplicados em uma coluna, porém, a combinação de valores da coluna que representa a constraint Primary Key deve ser única.

PS: Como já dito em artigos anteriores, partes dos conceitos descritos ao longo deste artigo e de outros foram retirados das minhas apostilas de SQL Server, da Impacta Tecnologia.

Em nossos exemplos vamos usar a tabela Vendas, que criamos e inserimos registros anteriormente.

Faça um SELECT * FROM na tabela Vendas e veja o resultado:


Nela, podemos observar nos registros que podemos ter duas vendas com o mesmo tipo e mesmo valor, além de ambas estarem com Telefone e CPF/CNPJ com valor nulo.

Com esta situação, caso desejamos alterar o tipo de venda de apenas um registro, de Á VISTA para CHEQUE, por exemplo, será preciso identificá-los individualmente. Uma das soluções para este caso é acrescentar na tabela uma coluna cujos valores são únicos para cada venda. Neste caso, precisamos acrescentar uma coluna CodVenda, que será única para cada registro. Para incluir esta coluna, execute a seguinte instrução:


Na instrução acima, inseri a coluna CODVENDA, que é IDENTITY, ou seja, ela é auto-incremento, sendo contada de 1 em 1 (definido pelos parâmetros passados entre os parênteses) e que é PRIMARY KEY. Agora dê um SELECT * FROM na tabela VENDAS e veja o resultado:


Quando trabalhamos com o SQL Server, a nova coluna é inserida sempre no final da tabela.

Com a inclusão de uma coluna referente a código da venda, é possível identificar cada funcionário individualmente e, dessa forma, aplicar as alterações necessárias, sabendo que estamos tratando da venda certa.

A chave primária deve fazer parte da integridade referencial que se estabelece entre duas tabelas relacionadas. Mais sobre os outros tipos de chaves na próxima parte de nosso artigo.

Aguardem!