have primária x chave estrangeira: qual é a diferença?

Antes de aprender a diferença entre a chave primária e a chave estrangeira, vamos aprender:

O que são chaves?

Chaves são atributos que ajudam a identificar uma linha (tupla) em uma relação (tabela). Eles permitem que você encontre a relação entre duas tabelas. As chaves ajudam a identificar de forma única uma linha em uma tabela por uma combinação de uma ou mais colunas dessa tabela. A chave do banco de dados também é útil para localizar um registro ou linha exclusiva da tabela.

O que é relacionamento com o banco de dados?

O relacionamento do banco de dados é associações entre uma ou mais tabelas que são criadas usando instruções de junção. Ele é usado para recuperar dados do banco de dados de maneira eficiente. Existem basicamente três tipos de relacionamento 1) Um para Um, 2) Um para muitos, 3) Muitos para muitos.

O que é a chave primária?

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

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

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. Cada relacionamento no banco de dados deve ser suportado por uma chave estrangeira.

PRINCIPAIS DIFERENÇAS:

  • Uma restrição de chave primária é uma coluna que identifica exclusivamente cada linha na tabela do sistema de gerenciamento de banco de dados relacional, enquanto a 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, enquanto 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 em inserir os valores na coluna da tabela ao inserir qualquer valor na tabela de chave estrangeira, certifique-se de que o valor está presente em uma coluna de uma chave primária.

Por que usar a chave primária?

Aqui estão os contras / benefícios de usar a chave primária:

  • O objetivo principal da chave primária é identificar cada registro na tabela do banco de dados.
  • Você pode usar uma chave primária quando não permitir 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 índice agrupado sempre que você organiza fisicamente a tabela DBMS.

Por que usar chave estrangeira?

Aqui estão as razões importantes para usar a chave estrangeira:

  • As chaves estrangeiras ajudam a migrar entidades usando uma chave primária da tabela pai.
  • Uma 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 corresponder a 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 do pai dos dados corresponda aos valores da tabela filha.

Exemplo de chave primária

Sintaxe:

Abaixo está a sintaxe da chave primária:

 CREATE TABLE ( 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 possui a chave primária.

Exemplo:

StudIDNúm. da listaPrimeiro nomeSobrenomeE-mail
1onzeTomPreçoEste endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.
dois12usuarioWrightEste endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.
313DiasNatanEste endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.

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.

Exemplo de chave estrangeira

Sintaxe:

Abaixo está a sintaxe da chave estrangeira:

 CREATE TABLE ( 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 Nome da tabela indica o nome da tabela que você vai criar.
  • Os parâmetros coluna1, coluna2… representam as colunas que precisam ser adicionadas à tabela.
  • Restrição denota o nome da restrição que você está criando.
  • As referências indicam uma tabela com a chave primária.

Exemplo:

DeptCodeDeptName
001Ciência
002inglês
005Computador

Identificação do professorFnameLname
B002DavidWarner
B017SaraJoseph
B009MikeBrunton

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

Nesta tabela, adicionando a chave estrangeira em Deptcode ao nome do professor, podemos criar uma relação entre as duas tabelas.

Identificação do professorDeptCodeFnameLname
B002002DavidWarner
B017002SaraJoseph
B009001MikeBrunton

Este conceito também é conhecido como Integridade Referencial.

Diferença entre chave primária e chave estrangeira

Aqui está a diferença importante entre chave primária e chave estrangeira:

Chave primáriaChave Estrangeira
Uma restrição de chave primária é uma coluna ou grupo de colunas que identifica exclusivamente cada linha na tabela do sistema de gerenciamento de banco de dados relacional.Chave estrangeira é uma coluna que cria um relacionamento entre duas tabelas.
Ajuda a identificar de forma única um registro na tabela.É um campo da tabela que é a chave primária de outra tabela.
A chave primária nunca aceita valores nulos.Uma chave estrangeira pode aceitar vários valores nulos.
A chave primária é um índice clusterizado e os dados da tabela DBMS são organizados fisicamente na sequência do índice clusterizado.Uma chave externa não pode criar automaticamente um índice, clusterizado ou não clusterizado.
Você pode ter a única chave primária em uma tabela.Você pode ter várias chaves estrangeiras em uma tabela.
O valor da chave primária não pode ser removido da tabela pai.O valor do valor da chave estrangeira pode ser removido da tabela filho.
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.
A chave primária é um índice clusterizado.Por padrão, não é um índice clusterizado.
Duas linhas não podem ter valores idênticos para uma chave primária.Uma chave estrangeira pode conter valores duplicados.
Não há limitação em 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.