BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional...

Preview:

Citation preview

Diktat Kuliah Basis Data PENS ITS

Iwan Syarif

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.

Diktat Kuliah Basis Data PENS ITS

Iwan Syarif

• 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.

Diktat Kuliah Basis Data PENS ITS

Iwan Syarif

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 :

Diktat Kuliah Basis Data PENS ITS

Iwan Syarif

• 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 :

Diktat Kuliah Basis Data PENS ITS

Iwan Syarif

Intersection :

Set-Difference :

Cross-Product

• Contoh dipakai dua relasi berikut untuk operator cross-product maka kolom S1 dipasangkan dengan tiap kolom R1.

Diktat Kuliah Basis Data PENS ITS

Iwan Syarif

• 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 :

Diktat Kuliah Basis Data PENS ITS

Iwan Syarif

• 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

Diktat Kuliah Basis Data PENS ITS

Iwan Syarif

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.

Diktat Kuliah Basis Data PENS ITS

Iwan Syarif

• 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.

Recommended