Saat belajar database, kamu mungkin menemukan istilah RESTRICT dan CASCADE. Keduanya adalah aturan yang digunakan ketika data saling berhubungan melalui foreign key. Meskipun terdengar rumit, sebenarnya konsepnya sangat mudah dipahami.
Artikel ini akan menjelaskan perbedaan RESTRICT dan CASCADE dengan bahasa sederhana, lengkap dengan contoh penggunaannya agar mudah dipahami bahkan oleh pemula.
Apa Itu RESTRICT?
Bayangkan kamu memiliki sebuah kotak berisi kartu nama teman. Selama masih ada kartu yang menunjuk ke seseorang, kamu tidak boleh menghapus data orang tersebut.
Nah, itulah cara kerja RESTRICT.
Jika masih ada data lain yang bergantung pada data utama, maka database akan menolak proses penghapusan atau perubahan.
Contoh Sederhana
Tabel customers:
id | nama
-----------
1 | Budi
Tabel orders:
id | customer_id
----------------
1 | 1
2 | 1
Karena masih ada dua pesanan milik Budi, maka data Budi tidak boleh dihapus.
Jika dipaksa:
DELETE FROM customers
WHERE id = 1;
Database akan menghasilkan error karena aturan RESTRICT masih berlaku.
Apa Itu CASCADE?
Sekarang bayangkan semua kartu nama yang berhubungan dengan Budi ikut dibuang saat nama Budi dihapus.
Inilah yang dilakukan CASCADE.
Saat data utama dihapus, seluruh data yang berhubungan dengannya akan ikut terhapus secara otomatis.
Contoh
Jika menggunakan CASCADE:
DELETE FROM customers
WHERE id = 1;
Maka hasilnya:
- Data customer Budi dihapus.
- Semua data pesanan milik Budi ikut dihapus.
Tidak ada data yang tertinggal.
Perbedaan RESTRICT dan CASCADE
| RESTRICT | CASCADE |
|---|---|
| Menolak penghapusan data. | Menghapus data beserta data yang berhubungan. |
| Lebih aman. | Lebih praktis. |
| Tidak ada data yang ikut terhapus. | Semua data terkait ikut dihapus. |
| Cocok untuk data penting. | Cocok untuk data yang tidak ingin ditinggalkan (orphan data). |
Ilustrasi Kehidupan Sehari-hari
RESTRICT
Seorang guru tidak boleh dihapus dari daftar sekolah selama masih ada murid yang terdaftar di kelasnya.
Artinya, murid harus dipindahkan atau dihapus terlebih dahulu sebelum data guru bisa dihapus.
CASCADE
Ketika sebuah folder dihapus dari komputer, semua file di dalam folder tersebut ikut terhapus.
Folder adalah data utama, sedangkan file-file di dalamnya adalah data yang saling berhubungan.
Contoh Membuat Foreign Key dengan RESTRICT
FOREIGN KEY (customer_id)
REFERENCES customers(id)
ON DELETE RESTRICT;
Artinya, customer tidak bisa dihapus apabila masih memiliki data pada tabel lain.
Contoh Membuat Foreign Key dengan CASCADE
FOREIGN KEY (customer_id)
REFERENCES customers(id)
ON DELETE CASCADE;
Jika customer dihapus, seluruh data yang menggunakan customer_id tersebut juga akan ikut terhapus.
Kapan Menggunakan RESTRICT?
- Data keuangan.
- Data pelanggan.
- Data pegawai.
- Data transaksi penting.
- Data yang tidak boleh hilang secara tidak sengaja.
Kapan Menggunakan CASCADE?
- Data komentar pada artikel.
- Data foto milik pengguna.
- Data keranjang belanja.
- Data sementara.
- Data yang memang harus ikut dihapus bersama induknya.
Kesimpulan
Perbedaan utama antara RESTRICT dan CASCADE terletak pada cara database menangani data yang saling berhubungan.
- RESTRICT akan mencegah penghapusan jika masih ada data yang bergantung padanya.
- CASCADE akan menghapus semua data terkait secara otomatis ketika data utama dihapus.
Jika diibaratkan dengan permainan balok, RESTRICT berkata, "Jangan cabut balok bawah karena masih ada balok di atasnya." Sedangkan CASCADE berkata, "Kalau balok bawah dicabut, semua balok di atasnya ikut jatuh."
Diskusi & Komentar