Back to IF2240 Basis Data
Topic
Questions/Cues
- Apa itu Kalkulus Relasional?
- Apa itu Tuple Relational Calculus (TRC)?
- Sintaks umum TRC?
- Apa itu variabel tuple?
- Bagaimana formula kalkulus predikat di TRC?
- Apa itu quantifiers?
- Contoh TRC: Gaji > 80000?
- Contoh TRC: Hanya ID?
- Contoh TRC: Departemen Watson?
- Contoh TRC: Kursus Fall 2017 OR Spring 2018?
- Contoh TRC: Kursus Fall 2017 AND Spring 2018?
- Contoh TRC: Kursus Fall 2017 BUT NOT Spring 2018?
- Apa itu Safety of Expressions di TRC?
- Contoh ekspresi tidak aman di TRC?
- Contoh TRC dengan Kuantifikasi Universal?
- Apa itu Domain Relational Calculus (DRC)?
- Sintaks umum DRC?
- Apa itu variabel domain?
- Contoh DRC: Gaji > 80000?
- Contoh DRC: Hanya ID?
- Contoh DRC: Departemen Watson?
- Contoh DRC: Kursus Fall 2017 OR Spring 2018?
- Contoh DRC: Kursus Fall 2017 AND Spring 2018?
- Apa itu Safety of Expressions di DRC?
- Contoh DRC dengan Kuantifikasi Universal?
Reference Points
- Slide 6-18 dari “7. IF2240-SemII2425-m03-2-Relational-Calculus.pdf”
Pengantar Kalkulus Relasional
- Kalkulus Relasional adalah bahasa query non-prosedural. Ini berarti pengguna menentukan data apa yang ingin didapatkan, bukan bagaimana cara mendapatkannya.
- Ada dua bentuk utama Kalkulus Relasional:
- Tuple Relational Calculus (TRC).
- Domain Relational Calculus (DRC).
Tuple Relational Calculus (TRC)
- TRC adalah bahasa query non-prosedural di mana setiap query berbentuk: .
- Ini adalah himpunan semua tuple
tsedemikian rupa sehingga predikatPbenar untukt.- Variabel Tuple:
tadalah variabel tuple.t[A]menunjukkan nilai tupletpada atributA.t ∈ rmenunjukkan bahwa tupletada dalam relasir.- Formula Kalkulus Predikat:
Padalah formula yang mirip dengan kalkulus predikat.
- Set atribut dan konstanta.
- Set operator perbandingan: (misalnya,
<,≤,=,≠,>,≥).- Set konektor:
and(),or(),not().- Implikasi (): berarti “jika benar, maka benar”. Ini ekuivalen dengan .
- Set quantifiers (penentu kuantitas):
- Existential Quantifier (): berarti “ada (exists) sebuah tuple
tdalam relasirsedemikian rupa sehingga predikatQ(t)benar”.- Universal Quantifier (): berarti “Q benar
untuk semua(for all) tupletdalam relasir”.- Contoh Query TRC:
- **Mencari ID, nama, dept_name, salary untuk instruktur yang gajinya lebih besar dari {t \mid t \in \text{instructor} \wedge t[\text{salary}] > 80000}$
- Seperti query sebelumnya, tapi hanya menghasilkan atribut ID: (Catatan: sebuah relasi pada skema (ID) secara implisit didefinisikan oleh query ini ).
- Mencari nama semua instruktur yang departemennya di gedung “Watson”:
- Mencari set semua mata kuliah yang diajarkan di semester Fall 2017, atau di Spring 2018, atau keduanya:
- Mencari set semua mata kuliah yang diajarkan di semester Fall 2017, DAN di Spring 2018:
- Mencari set semua mata kuliah yang diajarkan di semester Fall 2017, TAPI TIDAK di Spring 2018:
- Keselamatan Ekspresi (Safety of Expressions) di TRC:
- Dimungkinkan untuk menulis ekspresi kalkulus tuple yang menghasilkan relasi tak hingga.
- Contoh: akan menghasilkan relasi tak hingga jika domain atribut
rtak hingga.- Untuk mencegah masalah ini, kita membatasi set ekspresi yang diizinkan menjadi ekspresi aman (safe expressions).
- Sebuah ekspresi dalam kalkulus relasional tuple aman jika setiap komponen
tmuncul di salah satu relasi, tuple, atau konstanta yang muncul diP.- Catatan: ini lebih dari sekadar kondisi sintaks. Contoh: tidak aman karena mendefinisikan set tak hingga dengan nilai atribut yang tidak muncul di relasi, tuple, atau konstanta di
P.- Kuantifikasi Universal di TRC:
- Contoh Query: “Temukan semua mahasiswa yang telah mengambil semua mata kuliah yang ditawarkan di departemen Biologi”.
- Catatan: Tanpa kuantifikasi eksistensial pada
student, query di atas tidak akan aman jika departemen Biologi belum menawarkan mata kuliah apa pun.Domain Relational Calculus (DRC)
- DRC adalah bahasa query non-prosedural yang setara kekuatannya dengan kalkulus relasional tuple.
- Setiap query adalah ekspresi berbentuk: .
$x_1, x_2, ..., x_n$merepresentasikan variabel domain.Pmerepresentasikan formula yang mirip dengan kalkulus predikat.- Contoh Query DRC:
- **Mencari ID, nama, dept_name, salary untuk instruktur yang gajinya lebih besar dari {<i, n, d, s> \mid <i, n, d, s> \in \text{instructor} \wedge s > 80000}$
- Seperti query sebelumnya, tapi hanya menghasilkan atribut ID:
- Mencari nama semua instruktur yang departemennya di gedung “Watson”:
- Mencari set semua mata kuliah yang diajarkan di semester Fall 2017, atau di Spring 2018, atau keduanya: (Kasus ini juga bisa ditulis lebih ringkas dengan menggabungkan kondisi
ORdalam satu klausasection).- Mencari set semua mata kuliah yang diajarkan di semester Fall 2017, DAN di Spring 2018:
- Keselamatan Ekspresi (Safety of Expressions) di DRC:
- Ekspresi aman jika semua hal berikut berlaku:
- Semua nilai yang muncul dalam tuple ekspresi adalah nilai dari
dom(P)(yaitu, nilai-nilai muncul baik diPatau di tuple relasi yang disebutkan diP).- Untuk setiap subformula “ada” (
there exists) dalam bentuk , subformula tersebut benar jika dan hanya jika ada nilaixdidom(P1)sedemikian rupa sehinggaP1(x)benar.- Untuk setiap subformula “untuk semua” (
for all) dalam bentuk , subformula tersebut benar jika dan hanya jikaP1(x)benar untuk semua nilaixdaridom(P1).- Kuantifikasi Universal di DRC:
- Contoh Query: “Temukan semua mahasiswa yang telah mengambil semua mata kuliah yang ditawarkan di departemen Biologi”.
- Catatan: Tanpa kuantifikasi eksistensial pada
student, query di atas tidak akan aman jika departemen Biologi belum menawarkan mata kuliah apa pun.
Kalkulus Relasional adalah bahasa query non-prosedural yang memungkinkan pengguna menyatakan apa yang diinginkan tanpa menentukan bagaimana cara mendapatkannya, berbeda dengan Aljabar Relasional yang prosedural. Terdapat dua bentuk utama:
Tuple Relational Calculus (TRC), yang berfokus pada variabel tuple (t) dan predikat, sertaDomain Relational Calculus (DRC), yang berfokus pada variabel domain (x). Keduanya menggunakan formula kalkulus predikat dengan operator perbandingan, konektor (AND,OR,NOT), dan quantifiers (∃untuk “ada” dan∀untuk “untuk semua”). KonsepSafety of Expressionssangat penting untuk memastikan bahwa query tidak menghasilkan relasi tak hingga, dengan syarat semua komponen tuple atau variabel domain yang dihasilkan harus muncul dalam relasi atau konstanta yang disebutkan dalam predikat query.
Additional Information (Optional)
Aspek Teknis Lanjutan:
- Equivalensi Aljabar dan Kalkulus Relasional: Aljabar Relasional dan Kalkulus Relasional (baik tuple maupun domain) memiliki kekuatan ekspresif yang ekuivalen. Artinya, setiap query yang dapat dinyatakan dalam salah satu bahasa ini dapat juga dinyatakan dalam bahasa lainnya. Hal ini merupakan dasar teoretis mengapa SQL, yang merupakan bahasa hibrida (campuran prosedural dan non-prosedural), sangat kuat.
- Kalkulus Predikat dalam Logika: Kalkulus relasional berakar kuat pada logika predikat orde pertama, yang merupakan cabang dari logika matematika. Ini memberikan dasar formal yang ketat untuk pemrosesan query database.
- SQL sebagai Bahasa Hibrida: SQL tidak murni kalkulus atau aljabar. Klausa
FROMdanJOINSQL memiliki sifat aljabar, sedangkan klausaWHEREmemiliki sifat kalkulus. Ini membuatnya sangat fleksibel dan kuat dalam praktiknya.Sumber & Referensi Lanjutan:
- Buku Teks: Silberschatz, Korth, Sudarshan: “Database System Concepts”, 7th Edition, Chapter 27: Formal-Relational Query Languages (online chapter), Bagian 27.1: The Tuple Relational Calculus dan Bagian 27.2: The Domain Relational Calculus.
- Teori Database: Pelajari lebih dalam tentang teori bahasa query formal dan bagaimana mereka diimplementasikan dalam sistem database modern.
Eksplorasi Mandiri:
- Konversi Query: Pilih beberapa query SQL sederhana atau menengah dan coba ekspresikan dalam Aljabar Relasional, Tuple Relational Calculus, dan Domain Relational Calculus. Perhatikan perbedaan dalam cara berpikir yang diperlukan untuk setiap paradigma.
- Peran Safety: Coba tulis query TRC atau DRC yang tidak aman dan pahami mengapa itu tidak aman berdasarkan definisi safety.