Chave única - Unique key

Na modelagem e implementação relacional de banco de dados , uma chave exclusiva (também conhecida como chave candidata ou apenas uma chave ) é um conjunto de atributos (colunas) dentro de uma tabela de banco de dados relacional (também chamada de relação ), tal que:

  1. a tabela não tem duas linhas ou registros distintos com os mesmos valores para essas colunas
  2. este conjunto de colunas é mínimo; ou seja, remover qualquer coluna da chave resultaria em valores duplicados no subconjunto resultante.

Quando uma coluna ou conjunto de colunas é definido como exclusivo para o sistema de gerenciamento de banco de dados , o sistema verifica se cada conjunto de valores é exclusivo antes de atribuir a restrição . Depois que as colunas forem definidas como exclusivas, ocorrerá um erro se for tentada uma inserção com valores já existentes. Alguns sistemas não permitirão que os valores das chaves sejam atualizados, todos os sistemas não permitirão duplicatas. Isso garante que a exclusividade seja mantida na tabela primária e em quaisquer relações que sejam posteriormente associadas a ela.

Resumo

As chaves fornecem os meios para que os usuários do banco de dados e o software aplicativo identifiquem, acessem e atualizem as informações em uma tabela de banco de dados. Pode haver várias chaves em qualquer tabela. Por exemplo, em uma tabela de funcionários, o número do funcionário e o nome de login são individualmente exclusivos. A aplicação de uma restrição de chave (ou seja, uma restrição de exclusividade) em uma tabela também é um recurso de integridade de dados do banco de dados. O DBMS evita atualizações que podem causar valores de chave duplicados e, portanto, garante que as tabelas sempre estejam em conformidade com as regras desejadas de exclusividade. A seleção adequada de chaves ao projetar um banco de dados é, portanto, um aspecto importante da integridade do banco de dados.

Uma tabela de banco de dados relacional pode ter uma ou mais chaves exclusivas disponíveis (formalmente chamadas de chaves candidatas ). Uma dessas chaves por tabela pode ser designada como chave primária ; outras chaves são chamadas de chaves alternativas .

Qualquer chave pode consistir em um ou mais atributos. Por exemplo, um número de previdência social pode ser uma única chave de atributo para um funcionário; uma combinação de número de voo e data pode ser uma chave que consiste em dois atributos para um voo programado.

Existem vários tipos de chaves usadas na modelagem e implementações de banco de dados .

Nome da Chave Definição
Simples Uma chave feita de apenas um atributo.
Concatenado Uma chave feita de mais de um atributo reunidos como uma única chave, como parte ou nome completo com um número gerado pelo sistema anexado, como costuma ser usado para endereços de e-mail .
Composto Uma chave feita de pelo menos dois atributos ou chaves simples, apenas chaves simples existem em uma chave composta.
Composto Como uma chave composta, mas os atributos individuais não precisam ser chaves simples.
Natural Uma chave feita de dados que existem fora do banco de dados atual. Em outras palavras, os dados não são gerados pelo sistema, como um número de previdência social importado de outro sistema.
Substituto Uma chave artificial feita a partir de dados atribuídos pelo sistema ou gerados quando existe outra chave candidata. As chaves substitutas geralmente são valores de ID numéricos e costumam ser usadas por motivos de desempenho.
Candidato Uma chave que pode se tornar a chave primária.
Primário A chave selecionada como chave primária. Apenas uma chave dentro de uma entidade é selecionada para ser a chave primária. Esta é a chave que pode migrar para outras entidades para definir os relacionamentos que existem entre as entidades. Quando o modelo de dados é instanciado em um banco de dados físico, é a chave que o sistema mais usa ao acessar a tabela ou unir as tabelas ao selecionar os dados.
Alternar Uma chave não primária que pode ser usada para identificar apenas uma linha em uma tabela. As chaves alternativas podem ser usadas como uma chave primária em uma seleção de tabela única.
Esqueceram Uma chave que migrou para outra entidade.

Na definição mais básica, "uma chave é um identificador único", portanto, uma chave única é um pleonasmo . As chaves que estão em sua entidade de origem são exclusivas dessa entidade. As chaves que migram para outra entidade podem ou não ser exclusivas, dependendo do design e de como são usadas na outra tabela. As chaves estrangeiras podem ser a chave primária em outra tabela; por exemplo, um PersonID pode se tornar o EmployeeID na tabela Employee. Nesse caso, o EmployeeID é uma chave estrangeira e a chave primária exclusiva, o que significa que as tabelas têm um relacionamento 1: 1. No caso em que a entidade pessoa continha o ID do pai biológico, não se espera que o ID do pai seja único porque um pai pode ter mais de um filho.

Aqui está um exemplo de uma chave primária se tornando uma chave estrangeira em uma tabela relacionada. O ID migra da tabela Autor para a tabela Livro.

Author Table Schema:

Author(ID, Name, Address, Born)

Book Table Schema:

Book(ISBN, AuthorID, Title, Publisher, Price)

Aqui, ID serve como chave primária na tabela 'Autor', mas também como AuthorID serve como chave estrangeira na tabela 'Livro'. A chave estrangeira serve como o link e, portanto, a conexão entre as duas tabelas relacionadas neste banco de dados de amostra.

Em um banco de dados relacional, uma chave candidata identifica exclusivamente cada linha de valores de dados em uma tabela de banco de dados. Uma chave candidata compreende uma única coluna ou um conjunto de colunas em uma única tabela do banco de dados. Duas linhas ou registros de dados distintos em uma tabela de banco de dados não podem ter o mesmo valor de dados (ou combinação de valores de dados) nessas colunas de chave candidatas, pois os valores NULL não são usados. Dependendo de seu projeto, uma tabela de banco de dados pode ter muitas chaves candidatas, mas no máximo uma chave candidata pode ser distinguida como a chave primária.

Uma restrição chave se aplica ao conjunto de tuplas em uma tabela em qualquer momento. Uma chave não é necessariamente um identificador único na população de todas as instâncias possíveis de tuplas que poderiam ser armazenadas em uma tabela, mas implica em uma regra de integridade de dados de que duplicatas não devem ser permitidas na tabela do banco de dados. Alguns exemplos possíveis de chaves são números de segurança social , ISBNs , números de registro de veículos ou nomes de login de usuário.

Em princípio, qualquer chave pode ser referenciada por chaves estrangeiras. Alguns SGBDs SQL permitem apenas uma restrição de chave estrangeira em relação a uma chave primária, mas a maioria dos sistemas permite que uma restrição de chave estrangeira faça referência a qualquer chave de uma tabela.

Definição de chaves em SQL

A definição de chaves em SQL:

  ALTER TABLE <table identifier> 
      ADD [ CONSTRAINT <constraint identifier> ] 
      { PRIMARY KEY | UNIQUE } ( <column name> [ {, <column name>}... ] )

Da mesma forma, as chaves podem ser definidas como parte da CREATE TABLEinstrução SQL.

  CREATE TABLE table_name (
     id_col   INT,
     col2     CHARACTER VARYING(20),
     key_col  SMALLINT NOT NULL,
     ...
     CONSTRAINT key_unique UNIQUE(key_col),
     ...
  )
  CREATE TABLE table_name (
     id_col  INT  PRIMARY KEY,
     col2    CHARACTER VARYING(20),
     ...
     key_col  SMALLINT NOT NULL UNIQUE,
     ...
  )

Diferenças entre restrição de chave primária e restrição única

Restrição de chave primária

  1. Uma chave primária não pode permitir nulos (uma chave primária não pode ser definida em colunas que permitem nulos).
  2. Cada tabela não pode ter mais de uma chave primária.
  3. Em alguns RDBMS, uma chave primária gera um índice clusterizado por padrão.

Restrição única

  1. Uma restrição exclusiva pode ser definida em colunas que permitem nulos, caso em que as linhas que incluem nulos podem não ser realmente exclusivas no conjunto de colunas definido pela restrição.
  2. Cada tabela pode ter várias restrições exclusivas.
  3. Em alguns RDBMS, uma restrição exclusiva gera um índice não clusterizado por padrão.

Observe que, ao contrário da restrição PRIMARY KEY, uma restrição UNIQUE não implica NOT NULL para as colunas que participam da restrição. NOT NULL deve ser especificado para tornar a (s) coluna (s) uma chave. É possível colocar restrições UNIQUE em colunas anuláveis, mas o padrão SQL afirma que a restrição não garante exclusividade de colunas anuláveis ​​(exclusividade não é aplicada para linhas onde qualquer uma das colunas contém um nulo).

De acordo com o padrão SQL, uma restrição exclusiva não impõe exclusividade na presença de nulos e, portanto, pode conter várias linhas com combinações idênticas de valores nulos e não nulos - no entanto, nem todos os RDBMS implementam esse recurso de acordo com o padrão SQL.

Veja também

Referências

links externos