Diferença entre chave primária e chave estrangeira

Principais diferenças entre chave primária e chave estrangeira

  • Uma restrição de chave primária é uma coluna que identifica exclusivamente cada linha da tabela do sistema de gerenciamento de banco de dados relacional, enquanto uma chave estrangeira é uma coluna que cria um relacionamento entre duas tabelas.
  • A chave primária nunca aceita valores nulos, enquanto a chave estrangeira pode aceitar vários valores nulos.
  • Você pode ter apenas uma única chave primária em uma tabela, mas pode ter várias chaves estrangeiras em uma tabela.
  • O valor da chave primária não pode ser removido da tabela pai, enquanto o valor da chave estrangeira pode ser removido da tabela filho.
  • Duas linhas não podem ter valores idênticos para uma chave primária; por outro lado, uma chave estrangeira pode conter valores duplicados.
  • Não há limitação para inserir os valores na coluna da tabela ao inserir qualquer valor na tabela de chave estrangeira; certifique-se de que o valor esteja presente em uma coluna de uma chave primária.
Diferença entre chave primária e chave estrangeira
Diferença entre chave primária e chave estrangeira

Aqui, analisei a diferença entre a chave primária e a chave estrangeira e avaliarei de forma abrangente seus prós e contras.

O que é Chave Primária?

Uma restrição de chave primária é uma coluna ou grupo de colunas que identifica exclusivamente cada linha da tabela do sistema de gerenciamento de banco de dados relacional. Não pode ser duplicado, ou seja, o mesmo valor não deve aparecer mais de uma vez na tabela.

Uma tabela não pode ter mais de uma chave primária. O chave primária pode ser definido no nível da coluna ou da tabela. Se você criar uma chave primária composta, ela deverá ser definida no nível da tabela.

Exemplo de chave primária

Sintaxe:

Abaixo está a sintaxe da chave primária:

CREATE TABLE <Table-Name>
(
Column1 datatype,
Column2 datatype,  PRIMARY KEY (Column-Name)
.
);    

Aqui,

  • Table_Name é o nome da tabela que você deve criar.
  • Column_Name é o nome da coluna que contém a chave primária.

Exemplo:

ID do estudo Núm. da lista Nome Sobrenome E-mail
1 11 Tom Preço abc@gmail.com
2 12 Nick Wright xyz@gmail.com
3 13 Dana Natan mno@yahoo.com

No exemplo acima, criamos uma tabela de alunos com colunas como StudID, Roll No., First Name, Last Name e Email. StudID é escolhido como uma chave primária porque pode identificar exclusivamente outras linhas na tabela.

Por que usar chave primária?

Ao longo dos meus anos lidando com sistemas de banco de dados, observei estes contras e benefícios ao usar uma chave primária:

  • O principal objetivo da chave primária é identificar cada registro na tabela do banco de dados.
  • Você pode usar uma chave primária quando não permite que alguém insira valores nulos.
  • Se você excluir ou atualizar registros, a ação especificada será realizada para garantir a integridade dos dados.
  • Execute a operação de restrição para rejeitar a operação de exclusão ou atualização da tabela pai.
  • Os dados são organizados em uma sequência de índices agrupados sempre que você organiza fisicamente uma tabela do DBMS.

O que é Chave Estrangeira?

Chave estrangeira é uma coluna que cria um relacionamento entre duas tabelas. O objetivo da chave estrangeira é manter a integridade dos dados e permitir a navegação entre duas instâncias diferentes de uma entidade. Ele atua como uma referência cruzada entre duas tabelas, pois faz referência à chave primária de outra tabela. Todo relacionamento no banco de dados deve ser suportado por uma chave estrangeira.

Exemplo de chave estrangeira

Sintaxe:

Abaixo está a sintaxe da chave estrangeira:

CREATE TABLE <Table Name>( 
column1    datatype,
column2    datatype,  
constraint (name of constraint) 
FOREIGN KEY [column1, column2...] 
REFERENCES [primary key table name] (List of primary key table column) ...);

Aqui,

  • O parâmetro Table Name indica o nome da tabela que você vai criar.
  • Os parâmetros coluna1, coluna2… descrevem as colunas que precisam ser adicionadas à tabela.
  • Uma restrição denota o nome da restrição que você está criando.
  • As referências indicam uma tabela com a chave primária.

Exemplo:

CódigoDept NomeDepto.
001 Ciência
002 Inglês
005 Computação
ID do professor Fnome Lnome
B002 David Warner
B017 Sara Joseph
B009 microfone Brunton

No exemplo acima, temos duas tabelas: um professor e um departamento de uma escola. No entanto, não há como saber qual pesquisa funciona em qual departamento.

Nesta tabela, ao adicionar a chave estrangeira em Deptcode ao nome do professor, podemos criar um relacionamento entre as duas tabelas.

ID do professor CódigoDept Fnome Lnome
B002 002 David Warner
B017 002 Sara Joseph
B009 001 microfone Brunton

Este conceito também é conhecido como integridade referencial.

Por que usar chave estrangeira?

Pelo que vi, aqui estão os motivos importantes para implementar chaves estrangeiras:

  • As chaves estrangeiras ajudam você a migrar entidades usando uma chave primária da tabela pai.
  • A chave estrangeira permite vincular duas ou mais tabelas.
  • Isso torna os dados do seu banco de dados consistentes.
  • Uma chave estrangeira pode ser usada para combinar uma coluna ou combinação de colunas com a chave primária em uma tabela pai.
  • A restrição de chave estrangeira SQL é usada para garantir que a integridade referencial dos dados pai corresponda aos valores da tabela filho.

Diferença entre Chave Primária e Chave Estrangeira

Deixe-me compartilhar a importante diferença entre uma chave primária e uma chave estrangeira, como experimentei pessoalmente:

Chave Primária x Chave Estrangeira
Chave Primária x Chave Estrangeira
Base de comparação Chave primária chave estrangeira
Definição Uma restrição de chave primária é uma coluna ou grupo de colunas que identifica exclusivamente cada linha da tabela do sistema de gerenciamento de banco de dados relacional. Uma chave estrangeira é uma coluna que cria um relacionamento entre duas tabelas.
Basico Ajuda você a identificar exclusivamente um registro na tabela. É um campo da tabela que é a chave primária de outra tabela.
NULL A chave primária nunca aceita valores nulos. Uma chave estrangeira pode aceitar vários valores nulos.
Indexação A chave primária é um índice clusterizado, e os dados na tabela do DBMS são fisicamente organizados na sequência do índice clusterizado. Uma chave estrangeira não pode criar automaticamente um índice, agrupado ou não agrupado.
Contar Você pode ter uma única chave primária em uma tabela. Você pode ter várias chaves estrangeiras em uma tabela.
eliminação O valor da chave primária não pode ser removido da tabela pai. O valor da chave estrangeira pode ser removido da tabela filha.
Mesa temporária Você pode definir a chave primária implicitamente nas tabelas temporárias. Você não pode definir chaves estrangeiras nas tabelas temporárias locais ou globais.
Relacionamento A chave primária é um índice clusterizado. Por padrão, não é um índice clusterizado.
Duplicação Não há duas linhas que possam ter valores idênticos para uma chave primária. Uma chave estrangeira pode conter valores duplicados.
Inclusão Não há limitação para inserir os valores na coluna da tabela. Ao inserir qualquer valor na tabela de chave estrangeira, certifique-se de que o valor esteja presente em uma coluna de uma chave primária.

Como escolher entre uma chave primária e uma chave estrangeira

Pelo que vimos, as chaves primárias identificam exclusivamente as entradas da tabela, e as chaves estrangeiras vinculam essas entradas nas tabelas, ambas essenciais para manter a integridade dos dados e facilitar a recuperação eficiente dos dados.