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.
* Dasar formal yang kuat berdasarkan logika
* Bisa dioptimasi
· Bahasa Query tidak sama dengan bahasa pemrograman
* Bahasa Query tidak dimaksudkan untuk digunakan pada proses kalkulasi
yang kompleks.
* 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 :
* 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.
* Skema dari input relasi untuk suatu query bersifat pasti.
* 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.
· Bahasa Query : memungkinkan manipulasi dan pemanggilan data dari suatu basis
data.
· Model Relasional mendukung kesederhanaan, dengan kemampuannya untuk
melakukan bahasa Query.
* Dasar formal yang kuat berdasarkan logika
* Bisa dioptimasi
· Bahasa Query tidak sama dengan bahasa pemrograman
* Bahasa Query tidak dimaksudkan untuk digunakan pada proses kalkulasi
yang kompleks.
* 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 :
* 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.
* Skema dari input relasi untuk suatu query bersifat pasti.
* 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.
· Digunakan notasi dengan nama field pada hasil query yang diturunkan dari nama
fields dalam relasi input query.
Aljabar Relasional
· Operasi dasar :
* Selection : Memilih sub himpunan baris dari suatu relasi
* Projection : Menghapus kolom yang tidak dikehendaki dari relasi
* Cross-product : Memungkinkan kita untuk mengkombinasikan dua relasi
* Set-difference : Mendapatkan tupel yang terdapat dalam relasi satu, tapi
tidak terdapat dalam relasi dua.
* Union : Mendapatkan tupel yang terdapat dalam relasi satu dan relasi dua
· Operasi tambahan :
Intersection, join, division, renaming.
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 :
· 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 :
* Mempunyai jumlah field yang sama
* Field yang berkorespondensi memiliki tipe yang sama.
· Untuk dua table relasi S1 dan S2 berikut :
berikut ini adalah contoh dari ketiga operasi diatas :
Union :
Intersection :
Set-Difference :
Cross-Product
· Contoh dipakai dua relasi berikut untuk operator cross-product maka kolom S1
dipasangkan dengan tiap kolom R1.
· 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.
* 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 :
· 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
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
· 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) :
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.






























