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

BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

Embed Size (px)

Citation preview

Page 1: BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

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.

Page 2: BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

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.

Page 3: BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

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 :

Page 4: BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

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 :

Page 5: BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

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.

Page 6: BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

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 :

Page 7: BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

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

Page 8: BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

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.

Page 9: BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional ... · ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) ... o Union : Mendapatkan tupel yang terdapat dalam

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.