Implementasi relasi antar tabel dalam basis data relasional sangat bergantung pada konsep Foreign Key (kunci asing). Berdasarkan dokumentasi resmi dari MySQL Reference Manual dan literatur fundamental SQL seperti karya Mike Chapple, pemahaman mengenai batasan integritas referensial ini esensial untuk menjaga konsistensi data lintas tabel.
Dalam ekosistem MySQL, pengelolaan kata kunci dan sintaksis tunduk pada aturan Reserved Words yang ditetapkan oleh Oracle Corporation. Penggunaan nama kolom atau tabel yang termasuk dalam daftar kata terlindung memerlukan penanganan khusus seperti penggunaan backtick (`).
Konsep Dasar Foreign Key dalam MySQL
Foreign Key adalah kolom atau sekumpulan kolom dalam satu tabel yang mengacu pada Primary Key di tabel lain. Hubungan ini memastikan integritas referensial, mencegah masuknya data yatim (orphaned data), dan mengatur aksi otomatis seperti CASCADE, RESTRICT, atau SET NULL saat terjadi perubahan atau penghapusan data induk.
| Komponen | Deskripsi Standar MySQL | Referensi Dokumentasi |
|---|---|---|
| Parent Table | Tabel yang memiliki Primary Key sebagai acuan utama. | MySQL Reference Manual (Oracle Corporation) |
| Child Table | Tabel yang memuat kolom Foreign Key yang merujuk ke tabel induk. | SQL Fundamentals (Mike Chapple) |
| Reserved Words | Kata kunci yang dilindungi sistem dan tidak boleh dipakai langsung tanpa identifier. | MySQL 8.0 Reference Manual |
Contoh Implementasi Sintaksis
Berikut adalah contoh pembuatan tabel dengan relasi Foreign Key yang mematuhi standar sintaksis MySQL:
CREATE TABLE kategori (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_kategori VARCHAR(100) NOT NULL
) ENGINE=InnoDB;
CREATE TABLE produk (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_produk VARCHAR(150) NOT NULL,
kategori_id INT,
CONSTRAINT fk_kategori
FOREIGN KEY (kategori_id)
REFERENCES kategori(id)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB;
Aturan Penting dan Validasi Sistem
Agar relasi Foreign Key dapat berfungsi secara optimal di MySQL, pastikan beberapa syarat terpenuhi:
- Engine penyimpanan tabel wajib menggunakan InnoDB (MyISAM tidak mendukung Foreign Key).
- Tipe data pada kolom Foreign Key (di tabel anak) harus persis sama dengan tipe data Primary Key (di tabel induk).
- Perhatikan daftar kata yang dilindungi (Reserved Words) agar tidak menyebabkan kesalahan syntax saat eksekusi query.