Diktat Kuliah Basis Data PENS ITS
BAB 4 ALJABAR RELASIONAL
Bahasa Query Relasional (Relational Query Language) • Bahasa Query : memungkinkan manipulasi dan pemanggilan data dari suatu basis data. • Model Relasional mendukung kesederhanaan, dengan kemampuannya untuk melakukan bahasa Query. o Dasar formal yang kuat berdasarkan logika o Bisa dioptimasi • Bahasa Query tidak sama dengan bahasa pemrograman o Bahasa Query tidak dimaksudkan untuk digunakan pada proses kalkulasi yang kompleks. o Bahasa Query bisa dilakukan dengan mudah, mempunyai akses yang efisien terhadap himpunan data yang besar. Relasi Formal dari Bahasa Query • Terdapat dua macam bentuk bahasa Query : o Aljabar Relasional : lebih bersifat operasional, sangat berguna untuk merepresentasikan eksekusi perencanaan. o Kalkulus Relasional : Memungkinkan user menggambarkan apa yang mereka inginkan, tidak pada bagaimana cara melakukan komputasi terhadap apa yang mereka inginkan tersebut. (tidak bersifat operasional, tapi bersifat deklaratif). ð Memahami Aljabar dan Kalkulus Relasional adalah kunci dalam memahami SQL (Structured Query Language). Pendahuluan • Query diaplikasikan ke instance relasi, dan hasil dari query itu sendiri adalah instance relasi. o Skema dari input relasi untuk suatu query bersifat pasti. o Skema untuk hasil dari query yang diberikan juga bersifat pasti. Ditentukan oleh definisi konstruksi bahasa query yang diberikan. Contoh Instance • Berikut ini adalah contoh relasi Sailors dan Reserves.
Iwan Syarif
Diktat Kuliah Basis Data PENS ITS
•
Digunakan notasi dengan nama field pada hasil query yang diturunkan dari nama fields dalam relasi input query.
Aljabar Relasional • Operasi dasar : o Selection : Memilih sub himpunan baris dari suatu relasi Simbol : o Projection : Menghapus kolom yang tidak dikehendaki dari relasi Simbol : o Cross-product : Memungkinkan kita untuk mengkombinasikan dua relasi Simbol : o Set-difference : Mendapatkan tupel yang terdapat dalam relasi satu, tapi tidak terdapat dalam relasi dua. Simbol : o Union : Mendapatkan tupel yang terdapat dalam relasi satu dan relasi dua. Simbol : •
Operasi tambahan : Intersection, join, division, renaming.
Iwan Syarif
Diktat Kuliah Basis Data PENS ITS
Projection • Menghapus atribut yang tidak dikehendaki dari relasi Misal terdapat relasi S1 berikut :
•
Jika diberikan query :
Maka table relasi yang dihasilkan dari query diatas adalah :
•
Jika pada relasi S2, diberikan query :
Maka table relasi yang dihasilkan dari query diatas adalah :
Dari hasil tersebut, dapat dilihat bahwa operasi projection, dapat mengeleminasi duplikat (field yang bernilai sama). Selection • Memilih kolom pada relasi, sesuai dengan kondisi yang sudah ditentukan. • Untuk contoh relasi S2 seperti pada table sebelumnya, jika diberikan query :
maka table relasi yang dihasilkan :
Iwan Syarif
Diktat Kuliah Basis Data PENS ITS
•
Dan jika diberikan query berikut untuk relasi S2 :
maka table relasi yang dihasilkan :
Union, Intersection, Set-Difference • Semua operasi ini membutuhkan dua relasi, syarat yang harus dipenuhi adalah : o Mempunyai jumlah field yang sama o Field yang berkorespondensi memiliki tipe yang sama. • Untuk dua table relasi S1 dan S2 berikut :
berikut ini adalah contoh dari ketiga operasi diatas : Union :
Iwan Syarif
Diktat Kuliah Basis Data PENS ITS
Intersection :
Set-Difference :
Cross-Product • Contoh dipakai dua relasi berikut untuk operator cross-product maka kolom S1 dipasangkan dengan tiap kolom R1.
Iwan Syarif
Diktat Kuliah Basis Data PENS ITS
•
Skema hasil memiliki satu field per field dari S1 dan R1. o Akan terjadi konflik jika kedua relasi memiliki nama field yang sama seperti pada contoh dibawah ini.
o Maka perlu dipakai operator renaming pada query berikut :
Join • •
Condition Join / Theta Join : Jadi untuk table cross product S1 x R1 sebelumnya, jika diberikan query berikut :
maka table relasi yang dihasilkan :
• • • •
Skema hasil mirip dengan cross-product, hanya diberi kondisi tertentu Lebih sedikit tupel yang dihasilkan, dibandingkan dengan menggunakan operator cross-product, karena komputasinya lebih efisien Seringkali disebut dengan operator theta-join. Equi-Join : Kasus khusus dari condition join dimana kondisi c hanya berisi kesamaan (nilai yang sama dari kedua relasi). Contoh query berikut :
Tabel relasi yang dihasilkan :
Iwan Syarif
Diktat Kuliah Basis Data PENS ITS
• •
Skema hasil hampir sama dengan cross-product, tapi hanya berisi satu copy field yang mempunyai kesamaan dari field yang sudah ditentukan. Natural join : Equi-join pada semua fields.
Division • Tidak mendukung operator primitif, tapi sangat berguna untuk mengekspresikan query seperti ini : Find sailors who have reserved all boats. • Misal A memiliki 2 fields yaitu x dan y; sedangkan B hanya memiliki 1 field yaitu y : -
Misal A/B berisi semua tupel x (sailors) dimana untuk setiap tupel y (boat) dalam B, terdapat tupel xy dalam A. • Pada umumnya, x dan y dapat menjadi anggota fields; y adalah daftar fields dalam B, dan x U y adalah daftar fields dari A. Contoh-contoh operator Division A/B
Menyatakan A/B dengan menggunakan Operator Dasar
Iwan Syarif
Diktat Kuliah Basis Data PENS ITS
Cari nama sailor yang mempunyai reserved boar #103 • Solusi 1 : •
Solusi 2 :
•
Solusi 3 :
Cari nama Sailor yang mempunyai reserved a red boat • Informasi tentang color hanya ada dalam relasi Boats; sehingga diperlukan extra join : •
Solusi yang lebih efisien :
Cari nama Sailor yang memiliki reserved boat red atau green • Identifikasi semua red dan green boats, kemudian cari sailor yang memiliki salah satu dari dua warna boat tersebut.
Iwan Syarif
Diktat Kuliah Basis Data PENS ITS
• •
Tempboats juga dapat didefinisikan dengan menggunakan operator Union (bagaimana caranya ?) Apa yang didapatkan jika operator v diganti dengan ^ dalam query diatas ?
Cari Sailor yang memiliki red dan green boat • Harus diidentifikasi sailor yang memiliki red boat dan sailor yang memiliki green boat, kemudian lakukan intersection (catatan : sid adalah kunci pada relasi Sailors) :
Cari nama semua Sailors yang memiliki reserved boat • Gunakan division; skema dari relasi input harus dipilih dengan hati- hati.
•
Untuk mendapatkan semua Sailors yang memiliki reserved boat ‘Interlake’
Ringkasan • Model relasional secara detail didefinisikan oleh bahasa query yang bersifat simple dan powerful • Aljabar relasional lebih operasional; berguna untuk representasi internal dari evaluasi perencanaan suatu query. • Beberapa cara dapat dipakai untuk mengekspresikan suatu query, dan dipilih cara yang paling efisien.
Iwan Syarif