Qual é a diferença entre uma chave primária e uma chave substituta?

Pesquisei muito no Google, mas não encontrei a resposta direta exata com um exemplo.

Qualquer exemplo disto seria mais útil.

Author: asktonishant, 2016-04-21

6 answers

A chave primária é uma chave única na sua tabela que você escolhe que melhor identifica um registro na tabela. Todas as tabelas devem ter uma chave primária, porque se você precisar atualizar ou excluir um registro, você precisa saber como identificá-lo de forma única.

Uma chave substituta é uma chave gerada artificialmente. Eles são úteis quando seus registros essencialmente não têm chave natural (como uma tabela Person, uma vez que é possível para duas pessoas nascidas na mesma data ter o mesmo nome, ou registros em um registro, uma vez que é possível que dois eventos aconteçam de modo que eles carregam o mesmo horário). Na maioria das vezes você vai ver estes implementados como inteiros em um campo de incremento automático, ou como GUIDs que são gerados automaticamente para cada registro. Os números de identificação são quase sempre chaves substitutas. Ao contrário das chaves primárias, nem todas as tabelas precisam de chaves substitutas. Se você tem uma tabela que lista os estados da América, você realmente não precisa de um número de identificação para eles. Podias ... use a abreviatura de Estado como um código de chave primária. A principal vantagem da chave substituta é que são fáceis de garantir como únicos. A principal desvantagem é que eles não têm nenhum significado. Não há nenhum significado que "28" é Wisconsin, por exemplo, mas quando você vê 'WI' na coluna de Estado de sua tabela de endereços, você sabe de que estado você está falando sem precisar procurar qual estado é qual em sua tabela de Estado.
 76
Author: Bacon Bits, 2016-04-21 15:16:28

A chave substituta é um valor inventado com o único objectivo de identificar uma linha de forma única. Normalmente, isto é representado por um ID de incremento automático.

Código de exemplo:

CREATE TABLE Example
(
    SurrogateKey INT IDENTITY(1,1) -- A surrogate key that increments automatically
)

A chave primária é a coluna de identificação ou o conjunto de colunas de um quadro. pode ser uma chave substituta ou qualquer outra combinação única de colunas (por exemplo, uma chave composta). Deve ser único para qualquer linha e não pode ser NULL.

Código de exemplo:

CREATE TABLE Example
(
    PrimaryKey INT PRIMARY KEY -- A primary key is just an unique identifier
)
 6
Author: tobypls, 2018-06-27 13:04:33
Todas as chaves são identificadores usados como substitutos das coisas que identificam. E. F. Codd explicou o conceito de sistema atribuído como se segue[1]:
Os utilizadores da Base de dados podem fazer com que o sistema gere ou apague um substituto., mas eles não têm controle sobre o seu valor, nem é o seu valor nunca exibida para eles.
Isto é o que é comumente referido como uma chave substituta. A definição é imediatamente problemática, no entanto, porque Codd estava assumindo que tal característica seria fornecida pelo SGBD. O DBMSs em geral não tem essa característica. As chaves são normalmente visíveis para pelo menos alguns usuários DBMS como, por razões óbvias, eles têm que ser. O conceito de um substituto, portanto, se transformou ligeiramente no uso. O termo é geralmente usado na profissão de gestão de dados para significar uma chave que não é exposta e usada como um identificador no domínio de negócios. Note que isto não está essencialmente relacionado com a forma como a chave é gerada ou como "artificial" é percebido como sendo. Todas as chaves consistem em símbolos inventados por humanos ou máquinas. O único significado possível do termo substituto, portanto, relaciona-se com a forma como a chave é usada, não como ela é criada ou quais são os seus valores.

[1] alargar o modelo relacional da base de dados para captar mais significado, E. F. Codd, 1979

 3
Author: nvogel, 2016-04-22 08:09:29

Este é um grande tratamento descrevendo os vários tipos de chaves:

Http://www.agiledata.org/essays/keys.html

 1
Author: n8wrl, 2016-04-21 14:46:31

Uma chave substituta é tipicamente um valor numérico. Dentro do SQL Server, a Microsoft permite que você defina uma coluna com uma propriedade de identidade para ajudar a gerar valores de chave substitutos.

A restrição de chave primária identifica unicamente cada registo numa tabela de bases de dados. As chaves primárias devem conter valores únicos. Uma coluna da chave primária não pode conter valores nulos. A maioria das tabelas deve ter uma chave primária, e cada tabela pode ter apenas uma chave primária chave.

Http://www.databasejournal.com/features/mssql/article.php/3922066/SQL-Server-Natural-Key-Verses-Surrogate-Key.htm

 1
Author: Bishoy Frank, 2016-04-21 15:00:08
Acho que a Michelle Poolet o descreve de uma forma muito clara.

Uma chave substituta é um valor produzido artificialmente, na maioria das vezes um contador de crescimento gerido pelo sistema cujos valores podem variar de 1 a n, em que n representa o número máximo de linhas de uma tabela. No servidor SQL, você cria uma chave substituta atribuindo uma propriedade de identidade a um coluna que tem um tipo de dados de números.

Http://sqlmag.com/business-intelligence/surrogate-key-vs-natural-key

Normalmente, ajuda-nos a usar uma chave substituta quando mudamos uma chave composta com uma coluna de identidade.
 0
Author: Fernando Gutierrez, 2016-04-21 15:33:14