Kalkulus Relasional
Kalkulus Relasional adalah salah satu pendekatan utama dalam pemodelan query dalam sistem basis data relasional. Kalkulus Relasional adalah bahasa non-prosedural, yang berarti bahwa pengguna mendeskripsikan apa yang ingin mereka ambil dari basis data tanpa menentukan bagaimana pengambilan data tersebut dilakukan, berbeda dengan bahasa prosedural seperti Aljabar Relasional yang menyajikan langkah-langkah eksplisit untuk mendapatkan hasil.
Dalam Kalkulus Relasional, terdapat dua jenis kalkulus yang digunakan:
- Kalkulus Relasional Tupel (Tuple Relational Calculus - TRC).
- Kalkulus Relasional Domain (Domain Relational Calculus - DRC).
1. Kalkulus Relasional Tupel (Tuple Relational Calculus - TRC)
Kalkulus Relasional Tupel menyajikan query dalam bentuk predikat (pernyataan yang dapat bernilai benar atau salah) yang diterapkan pada tupel-tupel dalam tabel. Hasil dari query adalah himpunan tupel yang memenuhi kondisi atau predikat yang diberikan.Bentuk umum dari query TRC adalah sebagai berikut:
{T | Kondisi(T)}
Di mana:
- `T` adalah variabel tupel.
- `Kondisi(T)` adalah kondisi yang harus dipenuhi oleh tupel `T`.
Contoh:
Misalkan kita memiliki tabel Mahasiswa(NIM, Nama, Umur). Jika kita ingin mendapatkan semua mahasiswa yang berumur lebih dari 20 tahun, kita dapat menuliskan query dalam bentuk Kalkulus Relasional Tupel seperti berikut:
{T | T ∈ Mahasiswa ∧ T.Umur > 20}
Artinya, "ambil semua tupel `T` dari tabel Mahasiswa di mana `T.Umur > 20`."
2. Kalkulus Relasional Domain (Domain Relational Calculus - DRC)
Kalkulus Relasional Domain mengoperasikan variabel domain yang menyatakan nilai individual dari suatu atribut, tidak pada tupel secara keseluruhan. DRC menggunakan notasi yang mirip dengan logika predikat, di mana variabel-variabel mewakili kolom-kolom dari suatu relasi.Bentuk umum dari query DRC adalah:
{(x1, x2, ..., xn) | Kondisi(x1, x2, ..., xn)}
Di mana:
- `x1, x2, ..., xn` adalah variabel yang mewakili domain dari atribut-atribut tabel.
- `Kondisi(x1, x2, ..., xn)` adalah kondisi yang harus dipenuhi oleh kombinasi nilai-nilai dari atribut-atribut tersebut.
Contoh:
Misalkan kita ingin mencari nama mahasiswa yang berumur lebih dari 20 tahun dari tabel Mahasiswa(NIM, Nama, Umur), query dalam DRC bisa ditulis sebagai berikut:
{(Nama) | ∃ NIM, Umur (Mahasiswa(NIM, Nama, Umur) ∧ Umur > 20)}
Artinya, "ambil nilai `Nama` di mana terdapat tupel dalam tabel Mahasiswa yang memiliki `Umur > 20`."
Perbandingan TRC dan DRC
- TRC beroperasi pada tingkat tupel (baris) dan lebih sesuai untuk operasi yang melibatkan banyak atribut.
- DRC beroperasi pada tingkat domain (kolom) dan lebih terfokus pada nilai individual atribut.
Contoh Soal dan Latihan
Soal 1 (TRC):Diberikan tabel Karyawan(NIK, Nama, Gaji, Jabatan), buatlah query dalam Kalkulus Relasional Tupel untuk mencari karyawan yang memiliki gaji lebih dari 10 juta.
Soal 2 (DRC):
Diberikan tabel Proyek(KodeProyek, NamaProyek, Anggaran), buatlah query dalam Kalkulus Relasional Domain untuk mendapatkan nama proyek dengan anggaran lebih dari 500 juta.