Uma chave estrangeira é diferente de uma superchave, chave candidata ou chave primária porque uma chave estrangeira é aquela usada para vincular duas tabelas ou criar conectividade entre as duas.
Aqui, nesta seção, discutiremos a chave estrangeira, seu uso e veremos alguns exemplos que nos ajudarão a entender o funcionamento e o uso da chave estrangeira. Veremos também sua implementação prática em um banco de dados, ou seja, criando e excluindo uma chave estrangeira em uma tabela.
O que é uma chave estrangeira
Uma chave estrangeira é aquela usada para vincular duas tabelas por meio da chave primária. Isso significa que as colunas de uma tabela apontam para o atributo de chave primária da outra tabela. Significa ainda que, se qualquer atributo for definido como um atributo de chave primária, funcionará em outra tabela como um atributo de chave estrangeira. Mas deve-se saber que uma chave estrangeira não tem nada a ver com a chave primária.
Uso de chave estrangeira
O uso de uma chave estrangeira consiste simplesmente em vincular os atributos de duas tabelas com a ajuda de um atributo de chave primária. Assim, é utilizado para criar e manter o relacionamento entre as duas relações.
Exemplo de chave estrangeira
Vamos discutir um exemplo para entender o funcionamento de uma chave estrangeira.
tutorial hadoop
Considere duas tabelas Estudante e Departamento tendo seus respectivos atributos conforme mostrado na estrutura da tabela abaixo:
próximo scanner
Nas tabelas, um atributo, você pode ver, é comum, ou seja, Stud_Id , mas possui restrições de chave diferentes para ambas as tabelas. Na tabela Student, o campo Stud_Id é um chave primária porque identifica exclusivamente todos os outros campos da tabela Aluno. Por outro lado, Stud_Id é um chave estrangeira atributo para a tabela Department porque atua como um atributo de chave primária para a tabela Student. Isso significa que as tabelas Aluno e Departamento estão vinculadas entre si por causa do atributo Stud_Id.
Na figura mostrada abaixo, você pode visualizar a seguinte estrutura do relacionamento entre as duas tabelas.
Nota: A Integridade Referencial no SGBD é desenvolvida a partir do conceito de chave estrangeira. É claro que uma chave primária é uma chave existente sozinha e uma chave estrangeira sempre faz referência a uma chave primária em alguma outra tabela, na qual a tabela que contém a chave primária é conhecida como tabela referenciada ou tabela pai para a outra tabela que está tendo a chave estrangeira.
Criando restrição de chave estrangeira
Em CRIAR TABELA
Abaixo está a sintaxe que nos fará aprender a criação de uma chave estrangeira em uma tabela:
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) );
Assim, desta forma, podemos definir uma chave estrangeira para uma tabela no banco de dados MYSQL.
No caso de criação de uma chave estrangeira para uma tabela em servidor SQL ou Oracle, a seguinte sintaxe funcionará:
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) );
Em ALTER TABLE
A seguir está a sintaxe para criar uma restrição de chave estrangeira em ALTER TABLE:
ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id);
Descartando chave estrangeira
Para excluir uma chave estrangeira, existe uma sintaxe descrita abaixo que pode ser usada:
ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment;
Assim, desta forma, podemos descartar uma chave estrangeira usando ALTER TABLE no banco de dados MYSQL.
Ponto para lembrar
Ao descartar a chave estrangeira, é necessário cuidar da integridade das tabelas que estão conectadas por meio de uma chave estrangeira. Caso você faça alterações em uma tabela e perturbe a integridade de ambas as tabelas, alguns erros poderão ser exibidos devido à conectividade inadequada entre as duas tabelas.
lista c#
Ações Referenciais
Existem algumas ações que estão vinculadas às ações executadas pelo detentor da tabela de chave estrangeira:
1) Cascata
1 de 1000
Quando excluímos linhas da tabela pai (ou seja, aquela que contém a chave primária), as mesmas colunas da outra tabela (ou seja, aquela que contém a chave estrangeira) também são excluídas. Assim, a ação é conhecida como Cascata .
2) Defina NULO
Tal ação referencial mantém a integridade referencial de ambas as tabelas. Quando manipulamos/excluímos uma linha referenciada na tabela pai/referenciada, na tabela filha (tabela com chave estrangeira), o valor dessa linha de referência é definido como NULL. Tal ação referencial executada é conhecida como Definir NULO .
3) Definir PADRÃO
string de data java
Tal ação ocorre quando os valores na linha referenciada da tabela pai são atualizados ou a linha é excluída, os valores na tabela filho são definidos como valores padrão da coluna.
4) Restringir
É a restrição onde o valor da linha referenciada na tabela pai não pode ser modificado ou excluído, a menos que não seja referido pela chave estrangeira na tabela filho. Assim, é uma ação referencial normal de uma chave estrangeira.
5) Nenhuma ação
É também uma restrição da chave estrangeira, mas é implementada somente após a tentativa de modificar ou excluir a linha referenciada da tabela pai.
6) Gatilhos
Todas essas e outras ações referenciais são basicamente implementadas como gatilhos onde as ações de uma chave estrangeira são muito semelhantes ou quase semelhantes aos gatilhos definidos pelo usuário. No entanto, em alguns casos, as ações referenciais ordenadas são substituídas por seus gatilhos equivalentes definidos pelo usuário para garantir a execução adequada do gatilho.