Database
 sql >> Base de Dados >  >> RDS >> Database

CHAVE ESTRANGEIRA SQL


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.