Dalam artikel ini, kita akan belajar tentang batasan FOREIGN KEY dan cara mendefinisikan batasan FOREIGN KEY untuk membangun hubungan antara dua tabel.
Dalam Relational Databases Management System (RDBMS), FOREIGN KEY adalah bidang atau sekelompok bidang yang digunakan untuk membangun hubungan antara dua tabel atau menggabungkan dua tabel.
- KUNCI ASING juga dikenal sebagai kunci referensi di RDBMS
- Menggunakan batasan FOREIGN KEY antara dua tabel, kita mendefinisikan hubungan induk-anak antara dua tabel.
- Bidang mendefinisikan kendala KUNCI UTAMA dalam tabel yang dikenal sebagai tabel induk, sedangkan bidang yang sama mendefinisikan kendala KUNCI ASING di tabel lain yang dikenal sebagai tabel anak.
- Hanya ada satu KUNCI UTAMA dalam tabel, tetapi tidak ada batasan yang ditentukan pada KUNCI ASING. Kita dapat memiliki satu atau lebih dari satu KUNCI ASING di atas meja.
- Kita dapat mendefinisikan batasan FOREIGN KEY saat membuat tabel atau mendefinisikan batasan FOREIGN KEY pada tabel yang sudah ada.
Mari kita ambil contoh untuk memahami dan mempelajari batasan FOREIGN KEY.
Contoh:
Di sini, kami memiliki dua tabel satu adalah tabel Kursus dan yang kedua adalah tabel Siswa:
Para siswa memilih mata kuliah. Contoh batasan FOREIGN KEY berikut didefinisikan pada satu bidang.
Meja Nomor Satu:Meja Siswa
Student_Id | Nama_Depan | Nama_belakang | Id_Email | Kota |
101 | Kareena | Sayyed | [email protected] | Hyderabad |
102 | Anmol | Temani | [email protected] | Jalgaon |
103 | Keras | Patel | [email protected] | Mumbai |
104 | Sakshi | Kerudung | [email protected] | Pune |
105 | Tentu saja | Kohli | [email protected] | Hyderabad |
Tabel Nomor Dua:Tabel Kursus
Id_Kursus | Nama_Kursus | Id_Siswa |
C101 | Jawa | 101 |
C102 | SQL | 102 |
C103 | SOA | Nol |
C104 | SAP | 104 |
C105 | MuleSoft | 103 |
C101 | Jawa | 105 |
Pada tabel Student, field Student_Id adalah PRIMARY KEY dan pada tabel Course, Student_Id adalah FOREIGN KEY.
FOREIGN KEY
kendala mencegah data yang tidak valid dimasukkan ke dalam kolom kunci asing karena harus menjadi salah satu nilai yang terkandung dalam tabel induk.
Tentukan Batasan KUNCI ASING pada CREATE TABLE
Contoh berikut mendefinisikan KUNCI ASING pada tabel Kursus.
Pertama, kita telah membuat tabel Student dengan field berikut:
CREATE TABLE Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50), City varchar(20) NOT NULL, PRIMARY KEY(Student_Id));Contoh berikut menunjukkan cara mendefinisikan batasan FOREIGN KEY pada tabel lainnya.
Kursus Nama Tabel:
BUAT TABEL Kursus( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));Di tabel Kursus, kami tidak mendefinisikan KUNCI UTAMA apa pun. Cukup tentukan batasan FOREIGN KEY pada Student_Id.
Contoh batasan FOREIGN KEY berikut didefinisikan pada beberapa bidang.
Misalkan kita memiliki tiga tabel, satu adalah tabel Package, yang kedua adalah tabel Data, dan yang ketiga adalah tabel Talk_time:
Tabel 1:Paket:
Id_Paket | Id_Data | Id_waktu bicara |
P1001 | D1003 | T1001 |
P1002 | H1001 | T1002 |
P1003 | D1002 | T1003 |
P1004 | D1003 | T1004 |
P1005 | D1004 | T1005 |
Tabel 2:Data:
Data_Id | Batas_Data | Harga_Data |
D1001 | 5 | 120 |
D1002 | 3 | 75 |
D1003 | 6 | 150 |
D1004 | 10 | 240 |
D1005 | 15 | 320 |
Tabel 3:Waktu_Bicara:
Talk_Time_Id | Batas_Waktu Bicara | Waktu_Bicara _Harga |
T1001 | 120 | 130 |
T1002 | 70 | 105 |
T1003 | 60 | 90 |
T1004 | 200 | 220 |
T1005 | 150 | 170 |
Di tabel Talk_Time, Talk_Time_Id adalah KUNCI UTAMA.
Di tabel Data, Data_Id adalah PRIMARY KEY.
Sedangkan pada tabel Package, Talk_Time_Id dan Data_Id adalah kunci ASING
Tabel Nomor satu:Data:
BUAT TABEL Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));
Tabel Nomor dua:Waktu Bicara:
BUAT TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));
Tabel Nomor tiga:Paket:
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_Id));
Kendala KUNCI ASING menggunakan ALTER TABLE:
Misalkan kita telah membuat tabel dan ingin mendefinisikan batasan FOREIGN KEY di lapangan. Kami akan menggunakan kueri ALTER TABLE untuk menambahkan batasan FOREIGN KEY dalam kasus seperti itu.
Kueri berikut digunakan untuk menambahkan batasan KUNCI ASING pada bidang Student_Id.
ALTER TABLE Kursus ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);
ADD Keyword digunakan setelah nama tabel untuk menambahkan batasan FOREIGN KEY ke tabel yang sudah ada.
HENTIKAN KUNCI ASING dari tabel
Gunakan kueri berikut untuk menghapus batasan FOREIGN KEY dari tabel.
ALTER TABLE Kursus DROP FOREIGN KEY course_ibfk_1;
Kata kunci drop digunakan untuk menghapus batasan FOREIGN KEY dari bidang Student_Id.
course_ibfk_1 adalah nama batasan kunci asing.
Kami dapat memiliki nilai nol di bidang kendala KUNCI ASING. Kami dapat memiliki nilai duplikat di bidang batasan KUNCI ASING.