Neste artigo, aprenderemos sobre as restrições FOREIGN KEY e como definir uma restrição FOREIGN KEY para construir o relacionamento entre duas tabelas.
Em um Sistema de Gerenciamento de Bancos de Dados Relacionais (RDBMS), uma FOREIGN KEY é um campo ou grupo de campos que é usado para construir um relacionamento entre duas tabelas ou unir as duas tabelas.
- FOREIGN KEY também é conhecida como chave de referência no RDBMS
- Usando restrições FOREIGN KEY entre duas tabelas, definimos um relacionamento pai-filho entre duas tabelas.
- O campo define as restrições PRIMARY KEY em uma tabela conhecida como tabela pai, enquanto o mesmo campo define as restrições FOREIGN KEY em outra tabela conhecida como tabela filha.
- Só pode haver uma PRIMARY KEY na tabela, mas não há limite definido para a FOREIGN KEY. Podemos ter uma ou mais de uma FOREIGN KEY na mesa.
- Podemos definir restrições FOREIGN KEY ao criar a tabela ou definir restrições FOREIGN KEY na tabela já existente.
Vamos dar um exemplo para entender e aprender sobre as restrições FOREIGN KEY.
Exemplo:
Aqui, temos duas tabelas, uma é a tabela Course e a segunda é a tabela Student:
Os alunos selecionam os cursos. O exemplo de restrições FOREIGN KEY a seguir é definido em um campo.
Tabela número um:Tabela do aluno
ID_aluno | First_Name | Sobrenome | Email_Id | Cidade |
101 | Kareena | Disse | [email protected] | Hyderabad |
102 | Anmol | Temani | [email protected] | Jalgaon |
103 | Harshal | Patel | [email protected] | Mumbai |
104 | Sakshi | Capuz | [email protected] | Punha |
105 | Claro | Kohli | [email protected] | Hyderabad |
Tabela Número Dois:Tabela do Curso
Course_Id | Nome_curso | ID_aluno |
C101 | Java | 101 |
C102 | SQL | 102 |
C103 | SOA | Nulo |
C104 | SAP | 104 |
C105 | MuleSoft | 103 |
C101 | Java | 105 |
Na tabela Aluno, o campo Aluno_Id é a CHAVE PRIMÁRIA e na tabela Curso, Aluno_Id é a CHAVE ESTRANGEIRA.
A
FOREIGN KEY
restrição impede que dados inválidos sejam inseridos na coluna de chave estrangeira porque eles devem ser um dos valores contidos na tabela pai. Definir restrições FOREIGN KEY em CREATE TABLE
O exemplo a seguir define uma FOREIGN KEY na tabela Course.
Primeiro, criamos a tabela Aluno com os seguintes campos:
CREATE TABLE Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50), Cidade varchar(20) NOT NULL, PRIMARY KEY(Student_Id));
O exemplo a seguir mostra como definir as restrições FOREIGN KEY na outra tabela.
Curso de nome de mesa:
CREATE TABLE Course( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));
Na tabela Course, não definimos nenhuma CHAVE PRIMÁRIA. Basta definir as restrições FOREIGN KEY no Student_Id.
O exemplo de restrições FOREIGN KEY a seguir é definido em vários campos.
Suponha que temos três tabelas, uma é a tabela Package, a segunda é a tabela Data e a terceira é a tabela Talk_time:
Tabela 1:Pacote:
Package_Id | Data_Id | Talktime_Id |
P1001 | D1003 | T1001 |
P1002 | D1001 | T1002 |
P1003 | D1002 | T1003 |
P1004 | D1003 | T1004 |
P1005 | D1004 | T1005 |
Tabela 2:Dados:
Data_Id | Limite_dados | Data_Price |
D1001 | 5 | 120 |
D1002 | 3 | 75 |
D1003 | 6 | 150 |
D1004 | 10 | 240 |
D1005 | 15 | 320 |
Tabela 3:Talk_Time:
Talk_Time_Id | Talk_Time _Limit | Talk_Time _Preço |
T1001 | 120 | 130 |
T1002 | 70 | 105 |
T1003 | 60 | 90 |
T1004 | 200 | 220 |
T1005 | 150 | 170 |
Na tabela Talk_Time, Talk_Time_Id é a CHAVE PRIMÁRIA.
Na tabela de dados, Data_Id é a CHAVE PRIMÁRIA.
Enquanto na tabela Package, Talk_Time_Id e Data_Id são as chaves FOREIGN
Tabela número um:Dados:
CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));
Tabela número dois:Talk_Time:
CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));
Tabela número três:Pacote:
CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Data(Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk_Time_Id));
Restrições de FOREIGN KEY usando ALTER TABLE:
Suponha que já criamos a tabela e queremos definir as restrições FOREIGN KEY no campo. Usaremos a consulta ALTER TABLE para adicionar restrições FOREIGN KEY nesse caso.
A consulta a seguir é usada para adicionar restrições FOREIGN KEY no campo Student_Id.
ALTER TABLE Curso ADD FOREIGN KEY(Student_Id) REFERÊNCIAS Student(Student_Id);
A palavra-chave ADD é usada após o nome da tabela para adicionar as restrições FOREIGN KEY à tabela já existente.
DROP FOREIGN KEY da tabela
Use a consulta a seguir para remover a restrição FOREIGN KEY da tabela.
Curso ALTER TABLE DROP FOREIGN KEY course_ibfk_1;
A palavra-chave Drop é usada para remover restrições FOREIGN KEY do campo Student_Id.
course_ibfk_1 é o nome da restrição de chave estrangeira.
Podemos ter valores nulos no campo de restrições FOREIGN KEY. Podemos ter valores duplicados no campo de restrições FOREIGN KEY.