Integridade de dados

Aplicar a integridade de dados garante a qualidade dos dados do banco de dados. Por exemplo, se um funcionário for inserido com um valor de ID de funcionário de 123, o banco de dados não deverá permitir que outro funcionário tenha uma ID com o mesmo valor. Se você tiver uma coluna employee_rating destinada a conter valores que se estendem de 1 a 5, o banco de dados não deverá aceitar um valor fora desse intervalo. Se a tabela tiver uma coluna dept_id que armazene o número do departamento de um funcionário, o banco de dados deverá permitir apenas os valores que sejam válidos para os números de departamento da empresa.

Duas importantes etapas do planejamento de tabelas são a identificação de valores válidos para a coluna e a decisão sobre como aplicar a integridade de dados à coluna. A integridade de dados se encaixa nas seguintes categorias:

  • Integridade de entidade

  • Integridade de domínio

  • Integridade referencial

  • Integridade definida pelo usuário

Integridade de entidade

A integridade de entidade define uma linha como entidade exclusiva de determinada tabela. A integridade de entidade aplica a integridade das colunas do identificador ou da chave primária de uma tabela por meio de índices UNIQUE, restrições UNIQUE ou restrições PRIMARY KEY.

Integridade de domínio

A integridade de domínio é a validade de entradas para uma coluna específica. É possível aplicar a integridade de domínio para restringir o tipo usando tipos de dados; restringir o formato usando restrições e regras CHECK ou restringir o intervalo de valores possíveis usando as restrições FOREIGN KEY, restrições CHECK, definições DEFAULT, definições NOT NULL e regras.

Integridade referencial

A integridade referencial preserva as relações definidas entre tabelas quando linhas são digitadas ou excluídas. No SQL Server, a integridade referencial baseia-se nas relações entre chaves estrangeiras e chaves primárias ou entre chaves estrangeiras e chaves exclusivas, por meio de restrições FOREIGN KEY e CHECK. A integridade referencial assegura que os valores chave permaneçam consistentes em todas as tabelas. Esse tipo de consistência requer que não haja referências a valores não existentes e que se um valor chave é alterado, todas as referências a ele são consistentemente alteradas em todo o banco de dados.

Quando uma integridade referencial é aplicada, o SQL Server impede que os usuários façam o seguinte:

  • Adicionar ou alterar linhas a uma tabela relacionada se não houver nenhuma linha associada na tabela primária.

  • Alterar valores em uma tabela primária que causa linhas órfãs em uma tabela relacionada.

  • Excluir linhas de uma tabela primária se houver linhas relacionadas correspondentes.

Por exemplo, com as tabelas Sales.SalesOrderDetail e Production.Product no banco de dados AdventureWorks, a integridade referencial baseia-se nas relações entre a chave estrangeira (ProductID) da tabela Sales.SalesOrderDetail e a chave primária (ProductID) na tabela Production.Product. Essa relação assegura que o pedido de vendas nunca referencie um produto que não exista na tabela Production.Product.

Integridade referencial usando chaves estrangeiras/primárias

Integridade definida pelo usuário

A integridade definida pelo usuário permite definir regras comerciais que não se encaixam em outras categorias de integridade. Todas as categorias de integridade oferecem suporte à integridade definida pelo usuário. Isto inclui todas as restrições em nível de coluna e em nível de tabela no CREATE TABLE, procedimentos armazenados e gatilhos.