Back to IF2240 Basis Data
Topic
Questions/Cues
- Mengapa ada operator tambahan?
- Notasi dan definisi
Intersection?- Persyaratan
Intersection?- Contoh
Intersectionsederhana?- Bagaimana
Intersectiondinyatakan dengan operator dasar?- Notasi dan definisi
Natural Join?- Bagaimana tuple digabungkan di
Natural Join?- Contoh
Natural Joinsederhana?- Bagaimana
Natural Joindinyatakan dengan operator dasar?- Sifat asosiatif dan komutatif
Natural Join?- Apa itu
Theta Join?- Notasi dan penggunaan
Assignment?- Contoh
Assignment?- Notasi
Outer Join?- Definisi
Outer Join?- Apa itu null values?
- Hasil operasi aritmatika dengan null?
- Perilaku aggregate functions dengan null?
- Perilaku eliminasi duplikat dan grouping dengan null?
- Hasil perbandingan dengan null?
- Logika tiga nilai (Three-valued logic)?
- Apa itu Multiset Relational Algebra?
- Bagaimana
Selectiondi Multiset Algebra?- Bagaimana
Projectiondi Multiset Algebra?- Bagaimana
Cross Productdi Multiset Algebra?- Bagaimana
Union,Intersection,Differencedi Multiset Algebra?- Notasi dan definisi
Division?- Contoh
Divisionquery?- Contoh
Divisionsederhana?- Bagaimana
Divisiondinyatakan dengan operator dasar?- Notasi
Deletion?- Contoh
Deletionsederhana?- Contoh
Deletionkompleks?- Notasi
Insertion?- Tipe
Insertion?- Contoh
Insertiontuple spesifik?- Contoh
Insertiondari hasil query?- Notasi
Updating?- Bagaimana
UpdatingmenggunakanGeneralized Projection?- Contoh
Updatesederhana?- Contoh
Updatebersyarat?- Contoh
Updatedengan beberapa kondisi?Reference Points
- Slide 1-19 dari “5. IF2240---SemII_2425---m02-2---Relational-Algebra_Additional-Operators..pdf”
- Slide 1-16 dari “6. IF2240-SemII2425-m03-1-Relational-AlgebraExtendedModification.pdf”
- Slide 3-5 dari “7. IF2240-SemII2425-m03-2-Relational-Calculus.pdf”
Operator Tambahan Aljabar Relasional
Kami mendefinisikan operasi tambahan yang tidak menambahkan kekuatan apapun pada aljabar relasional, tetapi menyederhanakan query umum.
- Set Intersection
- Natural Join
- Assignment
- Outer Join
- Division
Operator
Set Intersection()
- Notasi:
- Definisi:
- Ini adalah himpunan semua tuple yang ada di
rDAN dis.- Persyaratan: Irisan himpunan harus diambil antara relasi yang kompatibel.
- Contoh 1:
RELATION R(A,B)danS(A,B). HasilR ∩ Sadalah tuple yang sama persis di kedua relasi.- Ekspresi dengan Operator Dasar:
r ∩ sdapat dinyatakan menggunakan operator dasar sebagai:r - (r - s).Operator
Natural Join()
- Notasi:
- Definisi: Misalkan
rdansadalah relasi pada skemaRdanSmasing-masing. Maka,r ⋈ sadalah relasi pada skema (gabungan semua atribut dariRdanS).
- Jika
t_rdant_smemiliki nilai yang sama pada setiap atribut di (atribut umum/bersama), tambahkan tuple hasil (konkatenasi darit_rdant_s) ke hasilnya.- Contoh 1:
RELATION R(A,B,C,D)danS(B,D,E). Atribut umum adalahBdanD. HasilR ⋈ Sakan menggabungkan baris dariRdanSdi mana nilaiBdanDcocok.- Ekspresi dengan Operator Dasar:
r ⋈ sdapat ditulis sebagaiΠ r.A, r.B, r.C, r.D, s.E (σ r.B=s.B ∧ r.D=s.D (r × s)).- Sifat
Natural Join:
- Asosiatif:
(instructor ⋈ teaches) ⋈ coursesetara denganinstructor ⋈ (teaches ⋈ course).- Komutatif:
instructor ⋈ teachessetara denganteaches ⋈ instructor.Theta Join(): Operasitheta joindidefinisikan sebagair ⋈_θ s = σ_θ (r × s). Ini adalah Cartesian product yang diikuti oleh select dengan predikatθ.Operator
Assignment()
- Notasi:
- Penggunaan: Menyediakan cara mudah untuk mengekspresikan query kompleks.
- Menulis query sebagai program sekuensial yang terdiri dari serangkaian penugasan.
- Diikuti oleh ekspresi yang nilainya ditampilkan sebagai hasil query.
- Penugasan harus selalu dilakukan ke variabel relasi sementara.
- Contoh: “Temukan semua instruktur di departemen ‘Physics’ dan ‘Music’“.
Physics ← σ dept_name="Physics" (instructor) Music ← σ dept_name="Music" (instructor) Physics ∪ MusicOperator
Outer Join()
- Notasi:
Left outer join:Right outer join:Full outer join:- Definisi: Menghitung join dan kemudian menambahkan tuple dari satu relasi yang tidak cocok dengan tuple di relasi lain ke hasil join.
- Menggunakan nilai
null:nullmenandakan bahwa nilai tidak diketahui atau tidak ada. Semua perbandingan yang melibatkannullsecara kasar (menurut definisi) adalahfalse.- Ekspresi dengan Operator Dasar: Contoh
outer join(r ⟕ s) dapat dinyatakan menggunakan operasi dasar sebagai:(r ⋈ s) ∪ ((r - Π_R(r ⋈ s)) × {(null, ..., null)}).Null Values
- Dimungkinkan bagi tuple untuk memiliki nilai
nulluntuk beberapa atributnya.nullmenandakan nilai yang tidak diketahui atau bahwa nilai tidak ada.- Hasil dari ekspresi aritmatika apa pun yang melibatkan
nulladalahnull.- Fungsi agregat (seperti
SUM,AVG,COUNT) mengabaikan nilainull(seperti di SQL).- Untuk eliminasi duplikat dan pengelompokan,
nulldiperlakukan seperti nilai lainnya, dan duanulldiasumsikan sama (seperti di SQL).- Perbandingan dengan
nullmengembalikan nilai kebenaran khusus:unknown.
- Jika
falsedigunakan alih-alihunknown, makaNOT (A < 5)tidak akan setara denganA >= 5.- Logika Tiga Nilai (
Three-valued logic) menggunakan nilai kebenaranunknown:
OR:(unknown or true) = true,(unknown or false) = unknown,(unknown or unknown) = unknown.AND:(true and unknown) = unknown,(false and unknown) = false,(unknown and unknown) = unknown.NOT:(not unknown) = unknown.- Di SQL, “
P is unknown” dievaluasi menjaditruejika predikatPdievaluasi menjadiunknown. Hasil dari predikatselectdiperlakukan sebagaifalsejika dievaluasi menjadiunknown.Multiset Relational Algebra
- Aljabar relasional murni menghilangkan semua duplikat (misalnya, setelah proyeksi).
- Aljabar relasional multiset mempertahankan duplikat, untuk mencocokkan semantik SQL.
- Retensi duplikat di SQL awalnya untuk efisiensi, tetapi sekarang menjadi fitur.
- Definisi Aljabar Relasional Multiset:
Selection: Memiliki sebanyak mungkin duplikat dari tuple seperti pada input, jika tuple memenuhi seleksi.Projection: Satu tuple per tuple input, bahkan jika itu adalah duplikat.Cross Product: Jika adamsalinant1dir, dannsalinant2dis, maka ada salinant1.t2dir × s.- Operator lain didefinisikan serupa:
Union:m + nsalinan.Intersection:min(m, n)salinan.Difference:max(0, m - n)salinan.Operator
Division()
- Notasi:
- Definisi: Diberikan relasi
r(R)dans(S), sedemikian rupa sehinggaS ⊆ R,r ÷ sadalah relasi terbesart(R-S)sedemikian rupa sehinggat × s ⊆ r.
R-Sadalah atribut diRyang tidak ada diS.- Contoh Query: “Mahasiswa yang telah mengambil semua mata kuliah di departemen Biologi.”
- Misalkan
r(ID, course_id) = Π ID, course_id (takes)dans(course_id) = Π course_id (σ dept_name="Biology" (course)).- Maka
r ÷ sadalah mahasiswa yang telah mengambil semua mata kuliah di Departemen Biologi.- Contoh 1:
RELATION r(A,B)dans(B). Hasilr ÷ sadalah nilaiAyang berpasangan dengan SEMUA nilaiByang ada dis.- Ekspresi dengan Operator Dasar:
r ÷ sdapat dinyatakan sebagai:temp1 ← Π R-S (r) temp2 ← Π R-S ((temp1 × s) - Π R-S, S (r)) temp1 - temp2Modifikasi Data (Data Modifications)
Aljabar relasional juga dapat digunakan untuk memodifikasi data.
Deletion (Penghapusan)
- Notasi:
r ← r - E
- Menghapus tuple yang dihasilkan oleh ekspresi
Edari relasir.- Contoh 1: “Hapus semua prasyarat (
prereq) dari mata kuliah ‘IF2240’“.
prereq ← prereq - σ course_id="IF2240" (prereq)- Contoh 2 (lebih kompleks): “Hapus rencana studi mahasiswa dengan ID ‘13518000’ untuk semester 1-2019.”
“Hapus semua seksi yang diajarkan oleh instruktur dengan ID ‘132132132’ untuk semester 2-2019.”takes ← takes - σ ID="13518000" ∧ semester=1 ∧ year=2019 (takes)Ini menunjukkan penghapusan yang kompleks melibatkan beberapa relasi dan intermediate results.r1 ← σ ID="132132132" ∧ semester=2 ∧ year=2019 (teaches) r2 ← Π course_id, sec_id, semester, year (r1) ∩ takes r3 ← Π course_id, sec_id, semester, year (r1) ∩ section teaches ← teaches - r1 takes ← takes - r2 section ← section - r3Insertion (Penyisipan)
- Notasi:
r ← r ∪ E
- Menambahkan tuple yang dihasilkan oleh ekspresi
Eke relasir.- Tipe Penyisipan:
- Menentukan tuple yang akan disisipkan.
- Menulis query yang hasilnya adalah sekumpulan tuple yang akan disisipkan.
- Contoh 1 (menyisipkan tuple spesifik): “Sisipkan informasi di database bahwa seorang mahasiswa pindahan, Abdul, dengan ID 13518600 terdaftar di departemen Comp. Sci. dengan 36 total kredit transfer dan instruktur 132132132 sebagai penasihatnya.”
student ← student ∪ {(13518600, "Abdul", "Comp. Sci.", 36)} advisor ← advisor ∪ {(13518600, 132132132)}- Contoh 2 (menyisipkan dari hasil query): “Semua mahasiswa dari departemen Comp. Sci. dengan total kredit kurang dari 130 secara otomatis terdaftar di mata kuliah IF4000 pada semester 2-2019 (didistribusikan secara merata ke 3 ID seksi yang tersedia: 1, 2, 3).”
r1 ← σ dept_name="Comp.Sci." ∧ tot_cred<130 (student) takes ← takes ∪ Π ID, "IF4000", ((ID-1) mod 3)+1, 2, 2019, null (r1)Updating (Pembaruan)
- Menggunakan operator
Generalized Projection() untuk melakukan tugas ini.- Notasi:
r ← Π F1, F2, ..., Fn (r)
- Setiap adalah:
- Atribut ke- dari
r, jika atribut ke- tidak diperbarui.- Jika atribut akan diperbarui, adalah ekspresi yang hanya melibatkan konstanta dan atribut dari
r, yang memberikan nilai baru untuk atribut tersebut.- Contoh 1 (pembaruan sederhana): “Berikan kenaikan gaji 5% kepada semua instruktur.”
instructor ← Π ID, name, dept_name, salary * 1.05 (instructor)- Contoh 2 (pembaruan bersyarat): “Berikan kenaikan gaji 5% kepada instruktur yang gajinya kurang dari 70000.”
instructor ← Π ID, name, dept_name, salary * 1.05 (σ salary<70000 (instructor)) ∪ σ salary>=70000 (instructor)- Ini menggabungkan hasil pembaruan untuk yang memenuhi syarat dengan yang tidak diubah.
- Contoh 3 (pembaruan dengan beberapa kondisi): “Tingkatkan gaji instruktur yang gajinya di atas $70,000 sebesar 3%, dan semua yang lain menerima kenaikan 5%.”
instructor ← Π ID, name, dept_name, salary * 1.05 (σ salary<=70000 (instructor)) ∪ Π ID, name, dept_name, salary * 1.03 (σ salary>70000 (instructor))
Selain enam operator dasar, Aljabar Relasional memiliki operator tambahan seperti
Intersection,Natural Join,Assignment,Outer Join, danDivisionuntuk menyederhanakan query kompleks, yang semuanya dapat diekspresikan menggunakan operator dasar. Konsepnull values(unknownatau tidak ada) memengaruhi operasi aritmatika, perbandingan (menghasilkanunknown), dan agregasi, serta diperlakukan sama dalam eliminasi duplikat.Multiset Relational Algebramempertahankan duplikat, berbeda dari aljabar relasional murni. Aljabar relasional juga mendukung modifikasi data melalui operasiDeletion(mengurangi tuple),Insertion(menambah tuple baik spesifik maupun dari hasil query), danUpdating(memperbarui nilai atribut menggunakanGeneralized Projection), memungkinkan manipulasi data yang komprehensif.
Additional Information (Optional)
Aspek Teknis Lanjutan:
- Implementasi
Outer Join: Dalam praktik SQL,OUTER JOINadalah fitur yang sangat sering digunakan karena kebutuhan untuk melihat semua data dari satu tabel bahkan jika tidak ada kecocokan di tabel lain. Pemahaman bagaimana ini dapat disimulasikan dengan operator dasar menunjukkan fondasi teoretisnya.- Normalisasi dan Operasi: Operasi seperti
Natural Joinsangat bergantung pada skema database yang ter-normalisasi dengan baik, di mana kunci asing dan primer memiliki nama dan domain yang konsisten.- Atomicity dalam Modifikasi Data: Meskipun aljabar relasional tidak secara eksplisit membahas transaksi, dalam implementasi nyata (DBMS), operasi modifikasi data ini biasanya merupakan bagian dari transaksi atomik.
- Generalized Projection dalam SQL: Di SQL, konsep Generalized Projection dapat dianalogikan dengan penggunaan ekspresi dalam klausa
SELECTuntuk menghitung nilai baru atau memodifikasi tampilan kolom.Sumber & Referensi Lanjutan:
- Buku Teks: Silberschatz, Korth, Sudarshan: “Database System Concepts”, 7th Edition, Bagian 2.6 (untuk operator) dan Bab 3 (untuk modifikasi data).
- Tutorial Online: Cari tutorial tentang “SQL NULL handling” dan “SQL Outer Joins” untuk melihat implementasi praktis konsep-konsep ini.
Eksplorasi Mandiri:
- Tulis Query Modifikasi: Dengan menggunakan skema database universitas, buatlah ekspresi aljabar relasional untuk:
- Menghapus semua mahasiswa yang memiliki total kredit kurang dari 50.
- Menyisipkan mata kuliah baru dengan
course_id,title,dept_name, dancreditsyang Anda tentukan.- Memberikan bonus 1000 kepada semua instruktur di departemen “Finance” yang gajinya di bawah $85000.
- Eksperimen dengan Null: Dalam database SQL, coba masukkan nilai null dan jalankan query dengan
IS NULL,IS NOT NULL, dan perbandingan aritmatika untuk memahami perilakunya secara langsung.