Jumat, 15 November 2013

TUGAS ALJABAR RELASIONAL A11.2011.06148

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.



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