As chaves estrangeiras são tão valiosas e conhecidas que são categorizadas como nível 3 nos estágios de normalização do banco de dados. No 3NF, todos os atributos (colunas) em uma tabela dependem diretamente da chave primária dessa tabela, e não há dependências transitivas.
A introdução das chaves estrangeiras pode ajudar a manter os requisitos do 3NF, garantindo que os valores em uma coluna de chave estrangeira existam apenas na chave primária referenciada.
O objetivo deste tutorial é mostrar como criar e usar uma chave estrangeira em um banco de dados Oracle. Este tutorial é orientado para os iniciantes e não abordamos como implementar as chaves estrangeiras nas normalizações do banco de dados.
Crie uma declaração de chave estrangeira
Podemos criar uma chave estrangeira durante a criação da tabela usando a declaração de tabela Create e a cláusula de chave estrangeira.
Podemos expressar a sintaxe como mostrado no seguinte:
Crie Table Table_name (
Column1 Datatype,
Column2 Datatype,
..
Chave estrangeira (Column1, Column2,…)
Referências outros_table_name (outros_column1, outros_column2,…)
);
O tabela_name refere -se à tabela que você deseja criar no banco de dados. Também definimos as colunas da tabela, o tipo de dados correspondente e várias restrições.
Finalmente, chamamos a cláusula de chave estrangeira para especificar a coluna ou colunas que desejamos compor as referências de chave estrangeira.
Para ilustrar melhor o uso de chaves estrangeiras, vamos pegar duas tabelas, como mostrado nas seguintes declarações Criar:
Crie bancos de dados de tabela
(
Número de identificação gerado por padrão no nulo como identidade,
nome varchar2 (50) não nulo,
Número do Default_port,
Última_version varchar2 (20) não nulo,
tipo varchar2 (20) não nulo,
idioma varchar2 (20) não nulo,
Chave estrangeira (ID)
Referências size_stats (database_id)
);
mesa 2:
Crie tabela size_stats (
Database_id Número Tecla primária,
size_on_disk número não nulo,
size_compressado Número
);
Na primeira cláusula, criamos uma tabela para armazenar as informações do banco de dados, como o nome do banco de dados, a porta padrão, a versão mais recente do banco de dados, o tipo de banco de dados e o idioma.
Além disso, incluímos a cláusula de chave estrangeira que define uma nova chave estrangeira na coluna ID da tabela de banco de dados. Esta chave estrangeira faz referência ao banco de dados_id na tabela Size_stats. Portanto, é bom garantir que a tabela size_stats exista antes de criar a tabela de bancos de dados.
Depois de configurar as tabelas de amostra, insira os dados da amostra na tabela para demonstração.
Inserir em size_stats (database_id, size_on_disk, size_compressed) (1, 100.45, 94.55);
Inserir em size_stats (database_id, size_on_disk, size_compressed) (2, 567.67, 344.43);
Inserir em size_stats (database_id, size_on_disk, size_compressed) (3, 649.30, 500.13);
Inserir em size_stats (database_id, size_on_disk, size_compressed) (4, 45.62, 39.96);
Inserir em size_stats (database_id, size_on_disk, size_compressed) (5, 1000.12, 986.43);
Em seguida, adicione os dados à tabela de bancos de dados, conforme mostrado no seguinte:
Insira em bancos de dados (nome, default_port, mais last_version, tipo, idioma)
Valores ('Oracle', 1521, '19C', 'relacional', 'SQL');
Insira em bancos de dados (nome, default_port, mais last_version, tipo, idioma)
Valores ('mysql', 3306, '8.0 ',' relacional ',' sql ');
Insira em bancos de dados (nome, default_port, mais last_version, tipo, idioma)
Valores ('PostgreSQL', 5432, '13', 'relacional', 'sql');
Insira em bancos de dados (nome, default_port, mais last_version, tipo, idioma)
Valores ('MongoDB', 27017, '4.4 ',' não relacional ',' javascript ');
Insira em bancos de dados (nome, default_port, mais last_version, tipo, idioma)
Valores ('Microsoft SQL Server', 1433, '2017', 'relacional', 't-sql');
As primeiras declarações de inserção devem nos dar uma tabela que contém as estatísticas de tamanho do banco de dados, como mostrado no seguinte:
A segunda tabela contém as informações do banco de dados, conforme mostrado no seguinte:
Depois que a chave estrangeira é aplicada, garante que os dados fornecidos estejam intactos e nenhum dado inválido seja adicionado.
Por exemplo, se tentarmos adicionar um novo banco de dados com um ID que não existe na tabela STATS, ele deve retornar um erro da seguinte maneira:
Insira em bancos de dados (nome, default_port, mais last_version, tipo, idioma)
Valores ('sqlite', null, '3.34 ',' relacional ',' c ');
Erro resultante:
[23000] [2291] ORA-02291: restrição de integridade (RH.SYS_C007781) Violado - chave dos pais não encontrada
Soltar uma restrição estranha
Você pode remover um nome de restrição estrangeira existente usando o comando ALTER TABLE, conforme mostrado no seguinte:
Altere tole tabela_name
Soltar restrição estrangeira_key_name;
Ativar/desativar uma chave estrangeira
Também podemos desativar ou ativar uma chave estrangeira sem removê -la da tabela, como mostrado nos seguintes comandos:
Alterar tabela tabela_name
Desativar restrição estranha_key_name;
Para ativar uma chave estrangeira, use o seguinte comando:
Alterar tabela tabela_name
Ativar restrição estranha_key_name;
Conclusão
Neste tutorial, você aprendeu a usar as chaves estrangeiras nas tabelas Oracle para melhorar e fornecer integridade de dados.