Lompat ke konten Lompat ke sidebar Lompat ke footer

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:
  1. Kalkulus Relasional Tupel (Tuple Relational Calculus - TRC).
  2. 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.