Para manter a integridade do estado do banco de dados, geralmente são necessárias diversas restrições sobre os valores em um estado. Essas restrições podem ser divididas em três categorias:

  1. Restrições implícitas e inerentes ao modelo de dados relacional.
  2. Restrições explícitas que podem ser expressas diretamente nos esquemas através de uma DDL (geralmente SQL).
  3. Restrições de aplicação (ou regras de negócios) que não podem ser expressas diretamente nos esquemas do modelo de dados, devendo ser impostas pelos programas de aplicação.

As restrições implícitas seguem diretamente das definições que compõe o modelo relacional, enquanto as restrições de aplicação expressam ideias particulares ao domínio de uma aplicação específica. Sendo assim, a seguir serão descritas as possíveis restrições explícitas que podem ser declaradas nos esquemas do modelo de dados.

Restrições de domínio

As restrições de domínio especificam que, dentro de cada tupla, o valor de cada atributo deve ser um valor indivisível do domínio . Esse tipo de restrição garante que os valores dos atributos sejam do mesmo domínio entre as tuplas.

Restrições de chave

Geralmente é necessário especificar subconjuntos de atributos cuja combinação dos valores precisa ser distinta para todas as tuplas em qualquer estado de uma relação . Esse subconjunto é chamado de superchave (denotado por ) do esquema de relação . Uma superchave especifica uma restrição de exclusividade na qual duas tuplas distintas não podem ter o mesmo valor de superchave, ou seja: para todas as tuplas e de um estado de relação , tem-se que:

Uma chave (denotada por ) é um tipo de superchave específico que satisfaz duas propriedades:

  1. Duas tuplas distintas em qualquer estado da relação não podem ter valores idênticos para todos os atributos na chave.
  2. A chave é uma superchave mínima, ou seja, uma superchave da qual não é possível remover nenhum atributo e manter uma restrição de exclusividade.

Os valores de atributos de chaves geralmente são utilizados para identificar exclusivamente as tuplas na relação. Note também que a propriedade de exclusividade de atributos chave deve ser mantida sempre, ou seja, mesmo com a inserção e alteração de tuplas na relação, os atributos chaves ainda devem ser exclusivos.

Um esquema de relação pode ter mais de uma chave, e nesse caso cada uma das chaves é chamada de chave candidata. Entretanto, geralmente especifica-se uma chave primária (denotada por ou ) dentre as chaves candidatas. Em um esquema de relação há apenas uma chave primária, e esta é utilizada para identificar as tuplas na relação.

Restrições sobre valores NULL

É possível especificar se um determinado atributo admite ou não valores NULL. Caso seja necessário que um atributo sempre tenha um valor válido em todas as tuplas, esse tipo de restrição garante que o valor do atributo nunca será NULL.

Restrições de integridade de entidade

A restrição de integridade de entidade garante que nenhum valor de chave primária pode ser NULL. Como as chaves primárias são usadas para identificar tuplas em um a relação, se o valor de alguma chave for NULL não será possível identificá-la nem referenciá-la.

Restrições de integridade referencial

A restrição de integridade referencial é usada para garantir a consistência entre tuplas em relações distintas que se referenciam. A própria definição de chave estrangeira (denotada por ou ) define também as propriedades da restrição de integridade referencial.

Um conjunto de atributos no esquema de relação é uma chave estrangeira de que referencia a relação se ela satisfizer as seguintes condições:

  1. Os atributos em têm o mesmo domínio que os atributos de chave primária de .
  2. Um valor de em uma tupla do estado atual ocorre como um valor de para alguma tupla no estado ou é NULL. No primeiro caso tem-se , e diz-se que a tupla referencia a tupla .

Se essas condições forem mantidas, diz-se que é mantida uma restrição de integridade referencial de para .