A principal diferença entre chave estrangeira e chave primária é que a chave estrangeira é uma coluna ou um conjunto de colunas que se referem a uma chave primária ou a uma chave candidata de outra tabela enquanto a chave primária é uma coluna ou um conjunto de colunas que pode ser usado para identificar exclusivamente uma linha em uma tabela.
Uma coluna ou um conjunto de colunas que pode ser usado para identificar ou acessar uma linha ou um conjunto de linhas em um banco de dados é chamado de chave. Uma chave primária em um banco de dados relacional é uma combinação de colunas em uma tabela que identifica exclusivamente uma linha da tabela. Chave estrangeira em um banco de dados relacional é um campo em uma tabela que corresponde à chave primária de outra tabela. A chave estrangeira é usada para cruzar tabelas de referência.
O que é chave estrangeira?
Chave estrangeira é uma restrição referencial entre duas tabelas. Ele identifica uma coluna ou um conjunto de colunas em uma tabela, chamada de tabela de referência, que se refere a um conjunto de colunas em outra tabela, chamada de tabela referenciada. A chave estrangeira ou as colunas na tabela de referência devem ser a chave primária ou uma chave candidata (uma chave que pode ser usada como chave primária) na tabela referenciada. Além disso, as chaves estrangeiras permitem vincular dados em várias tabelas. Portanto, a chave estrangeira não pode conter valores que não aparecem na tabela a que se refere. Então a referência fornecida pela chave estrangeira ajuda a vincular informações em várias tabelas e isso se tornaria essencial com bancos de dados normalizados. Várias linhas na tabela de referência podem se referir a uma única linha na tabela referenciada.
Figura 01: Mapeamento de Chave Estrangeira
No padrão ANSI SQL, a restrição FOREIGN KEY define chaves estrangeiras. Além disso, é possível definir as chaves estrangeiras ao criar a própria tabela. Uma tabela pode ter várias chaves estrangeiras e elas podem fazer referência a diferentes tabelas.
O que é chave primária?
Chave primária é uma coluna ou uma combinação de colunas que define exclusivamente uma linha em uma tabela de um banco de dados relacional. Uma tabela pode ter no máximo uma chave primária. A chave primária impõe a restrição NOT NULL implícita. Portanto, uma coluna com chave primária não pode conter valores NULL. A chave primária pode ser um atributo normal na tabela que é garantido como exclusivo, como um número de previdência social, ou pode ser um valor exclusivo gerado pelo sistema de gerenciamento de banco de dados, como um identificador global exclusivo (GUID) no Microsoft SQL Server.
Figura 02: Chave Primária
Além disso, a restrição PRIMARY KEY no padrão ANSI SQL define chaves primárias. Também é possível definir uma chave primária ao criar a tabela. Além disso, o SQL permite que a chave primária seja composta por uma ou mais colunas, e cada coluna incluída na chave primária é definida implicitamente como NOT NULL. Mas alguns sistemas de gerenciamento de banco de dados exigem que as colunas de chave primária sejam explicitamente NOT NULL.
Qual é a diferença entre chave estrangeira e chave primária?
Chave Estrangeira vs Chave Primária |
|
Chave estrangeira é uma coluna ou grupo de colunas em uma tabela de banco de dados relacional que fornece uma associação entre dados em duas tabelas. | Chave primária é uma coluna de tabela de banco de dados relacional especial ou uma combinação de várias colunas que permite identificar exclusivamente todos os registros da tabela. |
NULL | |
Chave estrangeira aceita valor NULL. | O valor da chave primária não pode ser NULL. |
Número de Chaves | |
A tabela pode ter várias chaves estrangeiras. | A tabela pode ter apenas uma chave primária. |
Duplicação | |
Tuplas podem ter um valor duplicado para um atributo de chave estrangeira. | Duas tuplas em uma relação não podem ter valores duplicados para um atributo de chave primária. |
Resumo – Chave estrangeira vs chave primária
A diferença entre chave estrangeira e chave primária é que a chave estrangeira é uma coluna ou um conjunto de colunas que se referem a uma chave primária ou a uma chave candidata de outra tabela enquanto a chave primária é uma coluna ou um conjunto de colunas que pode ser usado para identificar exclusivamente uma linha em uma tabela.