Chave primária - Primary key

No modelo relacional de bancos de dados , uma chave primária é uma escolha específica de um conjunto mínimo de atributos ( colunas ) que especificam exclusivamente uma tupla ( linha ) em uma relação ( tabela ). Informalmente, uma chave primária é "quais atributos identificam um registro" e, em casos simples, constituem um único atributo: um ID único. Mais formalmente, uma chave primária é uma escolha de chave candidata (uma superchave mínima ); qualquer outra chave candidata é uma chave alternativa .

Uma chave primária pode consistir em observáveis ​​do mundo real, caso em que é chamada de chave natural , enquanto um atributo criado para funcionar como uma chave e não usado para identificação fora do banco de dados é chamado de chave substituta . Por exemplo, para um banco de dados de pessoas (de uma determinada nacionalidade), a hora e o local de nascimento podem ser uma chave natural. O número de identificação nacional é outro exemplo de um atributo que pode ser usado como uma chave natural.

História

Embora seja usado principalmente hoje no contexto de banco de dados relacional, o termo "chave primária" é anterior ao modelo relacional e também é usado em outros modelos de banco de dados. Charles Bachman, em sua definição de banco de dados de navegação, é a primeira pessoa a definir as chaves primárias.

Projeto

Em termos de banco de dados relacional, uma chave primária não difere em forma ou função de uma chave que não é primária. Na prática, várias motivações podem determinar a escolha de qualquer uma das chaves como primária em vez de outra. A designação de uma chave primária pode indicar o identificador "preferido" para dados na tabela, ou que a chave primária deve ser usada para referências de chave estrangeira de outras tabelas ou pode indicar algum outro recurso técnico em vez de semântico da tabela. Algumas linguagens e software têm recursos de sintaxe especiais que podem ser usados ​​para identificar uma chave primária como tal (por exemplo, a restrição PRIMARY KEY em SQL).

O modelo relacional, conforme expresso por meio do cálculo relacional e da álgebra relacional, não distingue entre chaves primárias e outros tipos de chaves. As chaves primárias foram adicionadas ao padrão SQL principalmente como uma conveniência para o programador de aplicativos.

Definição de chaves primárias em SQL

As chaves primárias são definidas no padrão ISO SQL , por meio da restrição PRIMARY KEY. A sintaxe para adicionar tal restrição a uma tabela existente é definida em SQL: 2003 assim:

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

A chave primária também pode ser especificada diretamente durante a criação da tabela. No SQL Standard, as chaves primárias podem consistir em uma ou várias colunas. Cada coluna que participa da chave primária é definida implicitamente como NOT NULL. Observe que alguns RDBMS requerem a marcação explícita de colunas de chave primária como NOT NULL.

CREATE TABLE table_name (
   
   ...
)

Se a chave primária consistir apenas em uma única coluna, a coluna pode ser marcada como tal usando a seguinte sintaxe:

CREATE TABLE table_name (
   id_col  INT  PRIMARY KEY,
   col2    CHARACTER VARYING(20),
   ...
)

Chaves substitutas

Em algumas circunstâncias, a chave natural que identifica exclusivamente uma tupla em uma relação pode ser complicada de usar para o desenvolvimento de software. Por exemplo, pode envolver várias colunas ou campos de texto grandes. Nesses casos, uma chave substituta pode ser usada como chave primária. Em outras situações, pode haver mais de uma chave candidata para uma relação e nenhuma chave candidata é obviamente preferida. Uma chave substituta pode ser usada como a chave primária para evitar dar primazia artificial a uma chave candidata sobre as outras.

Visto que as chaves primárias existem principalmente como uma conveniência para o programador, as chaves primárias substitutas costumam ser usadas, em muitos casos exclusivamente, no design de aplicativos de banco de dados.

Devido à popularidade das chaves primárias substitutas, muitos desenvolvedores e, em alguns casos, até mesmo teóricos, passaram a considerar as chaves primárias substitutas uma parte inalienável do modelo de dados relacional. Isso se deve em grande parte a uma migração de princípios do modelo de programação orientado a objetos para o modelo relacional, criando o modelo híbrido de objeto-relacional. No ORM como padrão de registro ativo , essas restrições adicionais são colocadas nas chaves primárias:

  • As chaves primárias devem ser imutáveis, ou seja, nunca alteradas ou reutilizadas; eles devem ser excluídos junto com o registro associado.
  • As chaves primárias devem ser números inteiros anônimos ou identificadores numéricos.

No entanto, nenhuma dessas restrições faz parte do modelo relacional ou de qualquer padrão SQL. A devida diligência deve ser aplicada ao decidir sobre a imutabilidade dos valores da chave primária durante o design do banco de dados e do aplicativo. Alguns sistemas de banco de dados até implicam que os valores nas colunas de chave primária não podem ser alterados usando a UPDATEinstrução SQL.

Chave alternativa

Normalmente, uma chave candidata é escolhida como a chave primária. Outras chaves candidatas tornam-se chaves alternativas, cada uma das quais pode ter uma UNIQUErestrição atribuída a ela para evitar duplicatas (uma entrada duplicada não é válida em uma coluna única).

As chaves alternativas podem ser usadas como a chave primária ao fazer uma seleção de tabela única ou ao filtrar em uma cláusula where , mas normalmente não são usadas para unir várias tabelas.

Veja também

Notas

Referências