Apa Itu Foreign Key?
Foreign key adalah salah satu jenis constraint yang digunakan untuk merelasikan antar dua tabel atau lebih. Foreign key digunakan pada tabel kedua (detail) yang mereferensi ke tabel utama (master) yang mempunyai constraint primary key.Kalau Anda pernah belajar RDBMS, sebuah tabel bisa berelasi dengan tabel yang lainnya, baik itu One To One, One To Many, Many To One, dan Many To Many.
Agar lebih jelas, Anda dapat melihat contoh gambar relasi antara dua tabel di bawah ini:
![]() |
http://blog.vanderli.com.br/ |
Sintak Dasar Foreign Key
Di bawah ini adalah sintak dasar untuk mendefinisikan foreign key pada sebuah tabel di MySQL:CONSTRAINT constraint_name FOREIGN KEY foreign_key_name (columns) REFERENCES parent_table(columns)
Penjelasan sintak:
- CONSTRAINT adalah perintah untuk membuat sebuah constraint.
- constraint_name adalah nama yang akan Anda berikan untuk membuat foreign key
- FOREIGN KEY adalah perintah untuk mendefinisikan foreign key
- foreign_key_name (columns) adalah nama yang digunakan untuk constraint foreign key dan kolom yang akan dijadikan foreign key.
- REFERENCES parent_table(columns) adalah perintah untuk mereferensikan ke tabel utama (primary key)
Membuat Foreign Key
Untuk membuat sebuah constraint foreign key, Ada 2 cara yang Anda bisa gunakan yaitu:- Membuat Contraint Foreign Key Menggunakan Create Table
Anda dapat membuat constraint foreign key sewaktu Anda membuat sebuah tabel. Untuk lebih jelasnya, perhatikan contoh di bawah ini:
CREATE TABLE categories( category_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, category_name VARCHAR(50) NOT NULL, category_description VARCHAR(50) ) ENGINE=InnoDB; CREATE TABLE products( product_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, product_name VARCHAR(50) NOT NULL, price DECIMAL, category_id INT NOT NULL, FOREIGN KEY fk_category(category_id) REFERENCES categories(category_id) )ENGINE=InnoDB;
- Membuat Constraint Foreign Key Menggunakan Alter Table
Anda juga dapat menambahkan constraint foreign key pada sebuah tabel yang sudah ada. Perhatikan contoh di bawah ini:
CREATE TABLE vendors( vendor_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, vendor_name varchar(50) )ENGINE=InnoDB; ALTER TABLE products ADD COLUMN vendor_id INT NOT NULL;
Untuk menambahkan foreign key pada tabel products, Anda dapat menjalakan perintah ALTER TABLE di bawah ini:
ALTER TABLE products ADD FOREIGN KEY fk_vendor(vendor_id) REFERENCES vendors(vendor_id);
Menghapus Foreign Key
Untuk menghapus constraint foreign key pada sebuah tabel, Anda dapat mengggunakan sintak di bawah ini:ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
Sebagai contoh, asumsikan Anda ingin menghasus constraint foregin key pada tabel products, Anda dapat menjalankan perintah di bawah ini:
ALTER TABLE products DROP FOREIGN KEY fk_vendor;
kok saya nyoba di oracle 11g gak bisa ya?? yg create table foreign key
BalasHapusIni kan MySQL
Hapussaya sudah buat constraint foreign key di mysql untuk merelasikan tabel, tapi kenapa data/record pada tabel yang berelasi tersebut tetap bisa dihapus ya?
BalasHapusMas, abis dibikin jadi foreign key nya, kok gak langsung terisi otomatis child table nya sama data2 yang di parent table?
BalasHapuskalau membuat 2 foreign key sekaligus 2 di 1 table gimana ya ?
BalasHapusItu bukan lagi foreign key tapi candidate key.
HapusTerimakasih banyak gan :D hehehe
BalasHapussekarang saya jadi mengerti cara pembuatannya
Admin nya parah banyak yg nanya tapi diem aja, slow respon.
BalasHapusTerimakasih sudah membantu gan
BalasHapusTerima kasih gan. Info tentang foreign key nya sangat simple dan jelas.
BalasHapusTerimakasih telah membantu menjawab UAS saya😆
BalasHapusyuhuu, infonya sangat bermanfaat
BalasHapussolder uap