Skip to content

Como a integridade referencial garante a consistência do banco de dados

19 de abril de 2021

Integridade referencial é um recurso de banco de dados em sistemas de gerenciamento de banco de dados relacionais. Ele garante que as relações entre as tabelas em um banco de dados permaneçam precisas aplicando restrições para evitar que usuários ou aplicativos insiram dados imprecisos ou apontem para dados que não existem.

PhotoAlto / Gabriel Sanchez / Getty Images

Chave primária

A chave primária de uma tabela de banco de dados é um identificador exclusivo atribuído a cada registro. Cada tabela especifica uma ou mais colunas designadas como chave primária. Um número de Seguro Social pode ser uma chave primária para uma lista de banco de dados de funcionários porque cada número de Seguro Social é único. Dependendo da complexidade dos dados subjacentes, pode ser útil usar chaves compostas como a chave primária. Por exemplo, em uma tabela de funcionários, embora um número do Seguro Social funcione para identificar uma pessoa, uma combinação do SSN mais uma data de contratação pode isolar registros de funcionários específicos se a pessoa ingressou, saiu e depois voltou a ingressar na empresa.

Chave Estrangeira

Uma chave estrangeira é um identificador em uma tabela que corresponde à chave primária de uma tabela diferente. A chave estrangeira cria um relacionamento com uma tabela diferente. Integridade referencial se refere ao relacionamento entre essas tabelas. Quando uma tabela tem uma chave estrangeira para outra tabela, o conceito de integridade referencial afirma que você não pode adicionar um registro à tabela que contém a chave estrangeira, a menos que haja um registro correspondente na tabela vinculada. Também inclui as técnicas conhecidas como atualização em cascata e exclusão em cascata, que garantem que as alterações feitas na tabela vinculada sejam refletidas na tabela primária.

Exemplo de regras de integridade referencial

Considere, por exemplo, a situação em que você tem duas tabelas: Funcionários e Gerentes. A tabela Funcionários possui um atributo de chave estrangeira denominado ManagedBy, que aponta para o registro de cada gerente de funcionário na tabela Gerentes. A integridade referencial impõe as três regras a seguir:

  • Você não pode adicionar um registro à tabela Funcionários, a menos que o atributo ManagedBy aponte para um registro válido na tabela Gerenciadores. A integridade referencial evita a inserção de detalhes incorretos em uma tabela. Qualquer operação que não satisfaça a regra de integridade referencial falha.
  • Se a chave primária de um registro na tabela Managers for alterada, todos os registros correspondentes na tabela Employees serão modificados usando uma atualização em cascata.
  • Se um registro na tabela Managers for excluído, todos os registros correspondentes na tabela Employees serão excluídos usando uma exclusão em cascata.

Você provavelmente não deseja excluir funcionários em cascata quando os gerentes saem. A maioria dos trabalhos com bancos de dados não exclui registros, mas os desativa. Por exemplo, as tabelas de pessoal geralmente têm um sinalizador “ativo” para indicar o emprego atual. Quando um gerente sai, seu “sinalizador ativo” é definido como nulo – o registro não é removido. Então, quando um novo gerente é atribuído, os registros dos funcionários são atualizados para refletir o novo valor de chave estrangeira do novo gerente.

Vantagens das restrições de integridade referencial

Usar um sistema de gerenciamento de banco de dados relacional com integridade referencial oferece várias vantagens:

  • Impede a entrada de dados duplicados
  • Evita que uma tabela aponte para um campo inexistente em outra tabela
  • Garante consistência entre tabelas “parceiras”
  • Impede a exclusão de um registro que contém um valor referido por uma chave estrangeira em outra tabela
  • Impede a adição de um registro a uma tabela que contém uma chave estrangeira, a menos que haja uma chave primária na tabela vinculada