O que são chaves estrangeiras SQLITE

O que são chaves estrangeiras SQLITE
O SQLite é um RDBMS de código aberto (sistema de gerenciamento de banco de dados relacional), que gerencia os dados em tabelas. As tabelas usadas nos bancos de dados podem ter relacionamentos entre si, para estabelecer esse relacionamento, as chaves estrangeiras são usadas. Chaves estrangeiras dizem qual tabela está conectada a qual tabela.

As relações entre as tabelas são a característica principal dos bancos de dados relacionais, que estão sendo representados por chaves estrangeiras e primárias. Neste artigo, explicaremos as chaves estrangeiras e o trabalho deles no SQLite.

O que são chaves estrangeiras?

As chaves estrangeiras são os valores em uma tabela que indicam a chave primária de outra tabela. Para entender isso, vamos considerar duas tabelas, a Tabela A e a Tabela B:

Tabela a

ID do aluno (primário_key) Nome do aluno ID do professor (forign_key)
1 John 123
2 Paulo 453

Tabela b

ID do professor (primário_key) Nomes de professores Assuntos permitidos
123 Alex Matemática, Física
453 Juana Química, botânica

Agora, na Tabela A, Identidade estudantil é a chave primária dessa tabela, e ID do professor é a chave estrangeira, mas na tabela B, ID do professor é a chave primária. ID do professor, que é uma chave estrangeira, estabelece uma relação entre a Tabela A à Tabela B.

Como verificar o status da chave estrangeira no SQLite

O SQLite começa a apoiar a característica de uma chave estrangeira após o lançamento de sua versão 3.6.19, para verificar se a versão instalada do SQLite suporta a chave estrangeira ou não, execute o seguinte comando no ambiente SQLite:

PRAGMA FOREGN_KEYS;

A saída pode ser "0" ou "1" e, se não exibir nenhuma saída, significa que não suporta as chaves estrangeiras.

Saída Resultado
0 As chaves estrangeiras estão desativadas
1 As chaves estrangeiras estão ativadas

Como ativar/desativar as chaves estrangeiras em Sqlite

Para ativar as chaves estrangeiras em Sqlite, execute o seguinte:

PRAGMA FOREGN_KEYS = ON;

Podemos desativar as chaves estrangeiras, apenas digitando em vez de no comando acima. Para confirmar que as chaves estrangeiras estão ativadas, execute o comando Pragma:

PRAGMA FOREGN_KEYS;

A saída mostra 1, o que significa que as chaves estrangeiras estão sendo ativadas.

Qual é a sintaxe geral de usar a chave estrangeira

A sintaxe geral de usar uma chave estrangeira para criar uma tabela é:

Crie tabela Table_name
(
Column1 Datatype [NULL | Não nula] chave primária,
Column2 Datatype [NULL | Não nula] Chave estrangeira,
..
Chave estrangeira (Column1, Column2,…)))
Referências parent_table (column1, column2…)
);

A explicação disso é:

  • Use a cláusula "CRIAR A TABELA" Para a criação de uma mesa
  • Substitua a tabela_name pelo nome da tabela
  • Defina as colunas com seus tipos de dados e também defina se o suporte nulo/não valores nulos
  • Também menciona as colunas que mantêm a chave primária e a chave estrangeira
  • Use a instrução Chave estrangeira e mencionar em () os nomes das colunas que são chaves estrangeiras
  • Use a cláusula REFERÊNCIA e substitua o pai_table pelo nome da tabela pai e mencione suas chaves estrangeiras

Como uma chave estrangeira funciona no sqlite

Para entender o trabalho de chaves estrangeiras, vamos considerar um exemplo de serviço de correio e criar duas tabelas, Customer_Details e Shipment_Details, que estão tendo os seguintes dados:

Detalhes do cliente

Identificação do Cliente Nome do cliente Shipment_id
1 John 5612
2 Paulo 3467

shipment_details

Shipment_id Status De (cidade) Para (cidade)
5612 Entregue Londres Manchester
3467 Em processo Bristol Cardiff

Na tabela, Customer_Details, Customer_Id é a chave primária e o envio_ID é uma chave estrangeira. E na tabela, envio_details, shipment_id é uma chave primária.

Como adicionar uma chave estrangeira no SQLite

Para criar uma tabela, Customer_Details executa o seguinte comando:

Criar tabela Customer_Details (Customer_ID Primária Chave Primária, Customer_name NÃO NULL, RESPONSÃO_ID NÃO NULL, CHAVE ESEGAL (SHEPment_ID) Referencia a entrega_details (shipment_id));

No comando acima, mencionamos a chave estrangeira e a chave primária e também nos referimos à tabela onde a chave estrangeira estará disponível. Após a criação da tabela Customer_Details, criaremos a tabela de envio_details como:

Criar tabela envio_details (Shipment_id Integer Primary Key, Status Text, City_From Text, City_to Text);

Agora, para inserir valores na tabela Customer_Details, use o seguinte comando:

Inserir nos valores do cliente_details (Customer_Id, Customer_Name, Shipment_Id) (1, 'John', 5612), (2, 'Paul', 3467);

Podemos ver que gerou o erro de “Erro: restrição de chave estrangeira falhou”, Este erro é gerado porque estávamos se referindo à remessa_id da tabela, envio_details, que ainda não tem valor. Então, para remover esse erro, primeiro, temos que editar os dados em shipment_details, que estamos nos referindo à chave estrangeira. Para inserir dados na tabela shipment_details, execute o seguinte comando:

Inserir em shipment_details (shipment_id, status, city_from, city_to) valores (5612, 'entregue', 'Londres', 'manchester'), (3467, 'in_process', 'bristol', 'Cardiff');

Para exibir a tabela, envio_details, execute o comando:

Selecione * FROM DESTRAÇÃO_DETAILS;

Agora, execute novamente o comando para inserir valores em Customer_details usando a instrução:

Inserir nos valores do cliente_details (Customer_Id, Customer_Name, Shipment_Id) (1, 'John', 5612), (2, 'Paul', 3467);

O comando foi executado com sucesso sem gerar o erro de “restrição de chave estrangeira”. Para exibir a tabela, execute o comando:

Selecione * de Customer_Details;

Quais são as ações de restrições de chave estrangeira

Existem algumas ações que você pode executar na chave pai como resultado da qual a chave da criança responde. A sintaxe geral é:

Chave estrangeira (estranho_key_column)
REFERÊNCIAS PANTER_TABLE (PANTER_KEY_COLUMN)
Na atualização
Em delete;

Uma explicação para esta sintaxe é:

  • Escreva a cláusula de Chave estrangeira e substitua o “estrago_key_column” pelo nome da sua chave estrangeira
  • Substitua o "parent_table" pelo nome da tabela pai e também "parent_key_columns" com o nome de chave pai
  • Escreva a cláusula "na atualização" e "em delete" e substitua o "" pela ação que você deseja executar

O SQLite suporta as ações que são explicadas na tabela:

Ação Descrição
Nulo Quando a chave pai é excluída, a coluna da chave infantil definida para valores nulos
Conjunto padrão Funciona da mesma forma que a ação nula, mas em vez de definir valores nulos para a coluna da chave infantil, ele define um valor padrão
Sem ação Quando as alterações são feitas na chave pai do banco de dados pai, nenhuma alteração é realizada na chave da criança
Restringir Não permite que o usuário adicione ou exclua os valores de uma chave pai
Cascata Ele passa as mudanças que são feitas em uma tabela pai para a tabela infantil

Conclusão

Os bancos de dados relacionais são populares por sua característica de fornecer as relações entre as tabelas, Sqlite, um dos bancos de dados relacionais, também suporta esse recurso. Os relacionamentos são estabelecidos com a ajuda de chaves, conhecidas como chaves estrangeiras e primárias. Em Sqlite, a chave estrangeira deve ser habilitada para usá -la. Neste artigo, aprendemos quais são as chaves estrangeiras no sqlite e como elas funcionam. Também discutimos as ações de restrição de chaves estrangeiras apoiadas pelo SQLITE.