Upload
hoangkhanh
View
236
Download
0
Embed Size (px)
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.