basis data, ch 4 - relasonal aljabar & calculus

12
BAB 4 RELASIONAL ALJABAR DAN KALKULUS ljabar dan Kalkulus bersifat formal, non-user-friendly. Dua-duanya telah digunakan sebagai bahasa dasar bagi yang lain, Data Manipulation Language (DML) adalah bahasa tingkat tinggi untuk database relasional. Yang menarik dari Aljabar dan Kalkulus yaitu dapat menggambarkan operasi dasar yang dibutuhkan DML apapun dan dan juga berfungsi sebagai pembanding untuk relasional lainnya 4.1 ALJABAR RELASIONAL Aljabar relasional adalah bahasa teoritis dengan operasi yang bekerja pada satu atau lebih relasi untuk mendefinisikan relasi lain tanpa mengubah relasi aslinya. Dengan demikian, kedua operan dan hasilnya adalah sebuah hubungan relasi, sehingga output dari satu operasi dapat menjadi masukan untuk operasi yang lain. Hal ini memungkinkan menjadi ekspresi bersarang dalam aljabar relasional, seperti operasi aritmatika bersarang. Propeti tersebut dinamai Closure. Suatu hubungan relasi ditutup dalam aljabar, seperti nomor ditutup di bawah operasi aritmatika. Ada banyak variasi dari operasi yang termasuk dalam aljabar relasional. Codd (1972) awalnya diusulkan delapan operasi. Adapun kelima operasi dasar dalam aljabar relasional antara lain, Selection, Projection, Cartesian product, Union, dan Set difference, dan sebagai tambahan terdapat operasi Join, Intersection, dan Division untuk operasi pengambilan data. Fungsi setiap operasi diilustrasikan pada Gambar 4.1. Operasi Seleksi dan Proyeksi adalah bagian dari Operasi Unary, karena beroperasi pada satu relasi. Operasi lain bekerja pada pasangan hubungan relasi dan karena itu disebut Operasi Binary. Dalam definisi berikut, R dan S menjadi dua relasi yang didefinisikan melalui masing-masing atribut A = (a1, a2, ..., aN) dan B = (b1, b2, ..., bM),. A

Upload: ratzman-iii

Post on 05-Dec-2014

934 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

BAB

4

RELASIONAL

ALJABAR DAN KALKULUS

ljabar dan Kalkulus bersifat formal, non-user-friendly. Dua-duanya telah digunakan sebagai bahasa dasar

bagi yang lain, Data Manipulation Language (DML) adalah bahasa tingkat tinggi untuk database relasional.

Yang menarik dari Aljabar dan Kalkulus yaitu dapat menggambarkan operasi dasar yang dibutuhkan DML

apapun dan dan juga berfungsi sebagai pembanding untuk relasional lainnya

4.1 ALJABAR RELASIONAL

Aljabar relasional adalah bahasa teoritis dengan operasi yang bekerja pada satu atau lebih relasi untuk

mendefinisikan relasi lain tanpa mengubah relasi aslinya. Dengan demikian, kedua operan dan hasilnya adalah

sebuah hubungan relasi, sehingga output dari satu operasi dapat menjadi masukan untuk operasi yang lain. Hal ini

memungkinkan menjadi ekspresi bersarang dalam aljabar relasional, seperti operasi aritmatika bersarang. Propeti

tersebut dinamai Closure. Suatu hubungan relasi ditutup dalam aljabar, seperti nomor ditutup di bawah operasi

aritmatika.

Ada banyak variasi dari operasi yang termasuk dalam aljabar relasional. Codd (1972) awalnya diusulkan

delapan operasi. Adapun kelima operasi dasar dalam aljabar relasional antara lain, Selection, Projection, Cartesian

product, Union, dan Set difference, dan sebagai tambahan terdapat operasi Join, Intersection, dan Division untuk

operasi pengambilan data. Fungsi setiap operasi diilustrasikan pada Gambar 4.1.

Operasi Seleksi dan Proyeksi adalah bagian dari Operasi Unary, karena beroperasi pada satu relasi. Operasi

lain bekerja pada pasangan hubungan relasi dan karena itu disebut Operasi Binary. Dalam definisi berikut, R dan S

menjadi dua relasi yang didefinisikan melalui masing-masing atribut A = (a1, a2, ..., aN) dan B = (b1, b2, ..., bM),.

A

Page 2: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

Gambar 4.1a – Fungsi Operasi Aljabar Operasional

Gambar 4.1b – Fungsi Operasi Aljabar Operasional

4.1.1 OPERASI UNARY

Kita mulai pembahasan aljabar relasional dengan memeriksa dua operasi unary: Seleksi (Selection) dan Proyeksi

(Projection).

SELEKSI (SELECTION)

Contoh 4.1 : Operasi Seleksi

Page 3: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

Daftar semua staf dengan gaji yang lebih besar dari £ 10.000. Mengunakan rumus :

σsalary > 10000 (Staf)

Hubungan input Staf dan predikat adalah gaji > 10000. Operasi Seleksi mendefinisikan hubungan relasi yang hanya

berisi tupel Staff dengan salary yang memiliki nilai lebih besar dari £ 10.000. Hasil operasi ini ditunjukkan pada

Gambar 4.2. Predikat yang lebih kompleks dapat dihasilkan dengan menambahkan operator logika ∧ (AND), ∨ (OR)

dan ~ (NOT).

Gambar 4.2 – Hasil Seleksi Salary > £ 10.000 (Table Staff)

PROYEKSI (PROJECTION)

Contoh 4.2 : Operasi Proyeksi

Operasi Proyeksi mendefinisikan hubungan relasi yang berisikan hanya didesain untuk tabel Staff dengan atribut

yang terpilih. Misalkan kita hanya menampilkan staffNo, fName, IName, dan salary. Dengan demikian rumus

operasi proyeksi menjadi :

ΠstaffNo, fName, IName, salary (Staff)

Hasil operasi ini ditunjukkan pada Gambar 4.3.

Gambar 4.3 – Hasil Proyeksi Relasi Tabel Staff

4.1.2 OPERASI SET

Operasi Seleksi dan Proyeksi mengekstrak informasi hanya dari satu relasi. Jelas ada kasus di mana kita ingin

menggabungkan informasi dari beberapa relasi. Dalam bagian ini, kita kita mempelajari Operasi Binary relasional

aljabar, dimulai dengan operasi Union, Diferensi Set , Intersection, dan Cartesian Product.

UNION

Page 4: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

Jika R dan S memiliki I dan J tupel, masing-masing, Union diperoleh dengan menggabungkannya ke dalam satu

relasi maksimal dari tupel (I + J). Union dapat terjadi bila skema dari dari dua relasi tersebut sama, yaitu, jika

memiliki jumlah atribut yang sama dari domain yang sama. Dengan kata lain, hubungan harus Union-Compatible.

Perhatikan bahwa nama atribut tidak digunakan dalam mendefinisikan Union-Compatibility. Dalam beberapa kasus,

operasi Proyeksi dapat digunakan untuk membuat dua hubungan relasi Union-Compatible.

Contoh 4.3 : Operasi Union

Daftar semua city di mana ada salah satu Branch atau PropertyForRent.

Πcity (Branch) ∪ Πcity (PropertyForRent)

Untuk menghasilkan hubungan serikat-kompatibel, pertama kita menggunakan

operasi Proyeksi untuk memproyeksikan hubungan Branch dan

PropertyForRent atas kota atribut, menghilangkan duplikat di mana

diperlukan. Kami kemudian menggunakan operasi Union untuk menggabungkan

hubungan baru untuk menghasilkan hasil yang ditunjukkan pada Gambar 4.4.

Gambar 4.4 – Hasil Union

DIFERENSI SET

Contoh 4.4 Diferensi Set

Daftar semua city di mana ada Branch tetapi tidak ada

PropertyForRent.

Πcity (Branch) - Πcity (PropertyForRent)

Seperti pada contoh sebelumnya, hubungan tersebut menghasilkan juga Union-

Compatible dengan memproyeksikan hubungan relasi tabel Branch dan

PropertyForRent atas atribut city.

Gambar 4.5

Hasil Diferensi Set

INTERSECTION

Page 5: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

Contoh 4.5 : Intersection

Daftar semua city di mana keduanya ada Branch dan hanya ada satu

PropertyForRent.

Πcity (Branch) ∩ Πcity (PropertyForRent)

Seperti pada contoh sebelumnya, dengan menggunakan operasi intersection

untuk menggabungkan hubungan baru untuk menghasilkan hasil hubungan

Union-Compatible yang ditunjukkan pada Gambar 4.6.

Gambar 4.6

Hasil Intersection

CARTESIAN PRODUCT

Operasi Cartesian produk merupakan operasi pengalian dua relasi untuk mendefinisikan hubungan relasi lain yang

terdiri dari semua kemungkinan pasangan tupel dari dua relasi. Oleh karena itu, jika satu relasi memiliki tupel I dan

atribut N dan yang lain memiliki tupel J dan atribut M, hubungan relasi Cartesian product akan berisi tupel (I * J)

dengan atribut (N + M). Ada kemungkinan bahwa dua relasi dapat memiliki atribut dengan nama yang sama. Dalam

hal ini, nama-nama atribut diawali dengan nama relasi untuk mempertahankan keunikan nama atribut dalam relasi.

Contoh 4.6 : Cartesian Product

Daftar nama client berada dalam relasi client dan detail orang yang telah melihat berada pada relasi Viewing.

Untuk mempertahankan daftar client dan komentar pada property yang telah mereka lihat, kita gabungkan relasi ini

menjadi :

(ΠclientNo, fName, LName (Client) ) × (ΠclientNo, propertyNo, comment (Melihat) )

Hasil dari operasi ini ditunjukkan pada Gambar 4.7.

Page 6: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

Gambar 4.7 - Cartesian Product Mengurangi Relasi Client dan Viewing

Hubungan relasi ini berisi informasi lebih dari yang kita butuhkan. Sebagai contoh, tuple pertama dari relasi ini

mengandung nilai clientNo yang berbeda. Untuk mendapatkan daftar yang dibutuhkan, kita perlu menggunakan

operasi Seleksi pada hubungan relasi ini untuk mengekstrak tupel-tupel dimana Client.clientNo =

Viewing.clientNo . Operasi lengkap adalah sebagai berikut :

σClient.clientNo = Viewing.clientNo((ΠclientNo , fName , LName(Client)) × (ΠclientNo, propertyNo, comment(Viewing)))

Hasil operasi ini ditunjukkan pada Gambar 4.8 .

Gambar 4.8 – Pembatasan Cartesian Product Mengurangi Relasi Client dan Viewing

DEKOMPOSISI OPERASI KOMPLEKS Operasi aljabar relasional yang kompleksitas dapat terurai menjadi serangkaian operasi aljabar relasional kecil dan

memberinya nama untuk hasil ekspresi intermediate. Operasi penugasan dilambangkan dengan symbol ←, untuk

nama hasil operasi aljabar relasional, bagian kanan dari operasi adalah penugasan untuk bagian kirinya. Pada contoh

TempViewing(clientNo, propertyNo, comment) ← ΠclientNo, propertyNo, comment(Viewing)

Page 7: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

TempClient(clientNo, fName, lName) ←ΠclientNo, fName, lName(Client)

Comment(clientNo, fName, lName, vclientNo, propertyNo, comment) ←

TempClient × TempViewing

Result ← σclientNo = vclientNo(Comment)

Alternatif lain kita dapat menggunakan operasi Rename ρ (rho), yang memberikan nama pada hasil operasi aljabar

relasional. Rename memungkinkan opsional nama untuk setiap atribut dari relasi baru yang akan ditentukan.

4.1.3 OPERASI JOIN

Biasanya, kombinasi dari Cartesian Product yang memenuhi kondisi tertentu, biasanya menggunakan Operasi Join.

Operasi Join berguna dalam menggabungkan dua relasi untuk membentuk hubungan baru. Operasi Join merupakan

turunan dari Cartesian Product, setara dengan operasi Seleksi, menggunakan predikat Join sebagai rumus Seleksi,

atas Cartesian Product dari dua hubungan relasi operan. Join adalah salah satu operasi yang paling sulit untuk

diimplementasikan secara efisien dalam sebuah RDBMS dan merupakan salah satu alasan mengapa sistem relasional

memiliki masalah kinerja intrinsik.

Ada berbagai bentuk operasi Join, masing-masing memiliki perbedaan yang sangat tipis. Adapun jenis operasi

Join terdiri dari : Theta Join, Equijoin, Natural Join, Outer Join dan Semijoin.

THETA JOIN ( Θ JOIN)

Kita bisa menulis ulang Theta Join dalam hal operasi Seleksi dasar dan Cartesian Product :

Seperti Cartesian Product, derajat Theta join adalah jumlah derajat dari operan hubungan R dan S. Dalam kasus di

mana predikat F hanya berisi kesetaraan (=) atau Equijoin. Pada contoh 4.6, kita dapat melihat contoh query.

Contoh 4.7 : Operasi Equijoin

Daftar nama dan komentar dari semua klien yang telah melihat properti untuk disewakan.

Pada Contoh 4.6, kita menggunakan Cartesian Product dan operasi Seleksi untuk mendapatkan daftar ini. Namun,

hasil yang sama dapat diperoleh dengan menggunakan operasi Equijoin:

Atau

Page 8: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

Gambar 4.7 - Cartesian Product Mengurangi Relasi Client dan Viewing

Gambar 4.8 – Pembatasan Cartesian Product Mengurangi Relasi Client dan Viewing

NATURAL JOIN

Operasi Natural Join melakukan suatu Equijoin atas semua atribut dalam dua relasi yang memiliki nama yang sama.

Tingkat Natural Join adalah jumlah derajat dari hubungan relasi R dan S dikurang jumlah atribut dalam x.

Contoh 4.8 : Operasi Natural Join

Dalam daftar nama dan komentar dari semua client yang telah melihat properti untuk disewakan.

Pada Contoh 4.7 kita menggunakan Equijoin untuk menghasilkan daftar tersebut, tetapi hasil relasi memiliki dua

kejadian Join atribut dari clientNo. Kita dapat menggunakan Natural Join untuk menghapus satu kejadian dari

atribut clientNo:

Atau

Hasil operasi ini ditunjukkan pada Gambar 4.9.

Page 9: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

Gambar 4.9 – Hasil dari Natural Join

OUTER JOIN Seringkali dalam menggabungkan dua relasi, tupel dalam satu relasi tidak memiliki tupel yang cocok dalam membuat

hubungan relasinya, dengan kata lain, tidak ada nilai yang cocok dalam menggabungkan atribut-atributnya.

Terkadang kita ingin tupel-tupel dari salah satu relasi untuk tampil dari hasil sebuah peristiwa bahkan walaupun

tidak ada nilai yang cocok dalam hubungan relasi tersebut. Hal ini dapat dicapai dengan menggunakan Join Outer.

Outer join digunakan lebih luas dalam sistem relasional dan operator khusus yang ditetapkan dalam standar SQL.

Keuntungan dari Outer Join adalah adanya informasi yang dipertahankan, Outer Join mempertahankan tupel yang

akan hilang oleh jenis operasi Join lainnya.

Contoh 4.9 : Operasi Outer Join Kiri

Menghasilkan status laporan pada tampilan properti.

Dalam kasus ini, Kita membuat sebuah hubungan relasi dari properti yang telah dilihat dan dikomentari dengan

orang-orang yang belum melihat. Hal ini dapat dicapai dengan menggunakan Outer Join berikut:

Hasil relasi ditunjukkan pada Gambar 4.10. Perhatikan atribut PL94, PG21, dan PG16 tidak memiliki nilai, tetapi tupel

tersebut masih ada dengan nilai atributy Null dari relasi Viewing.

Gambar 4.10 – Hasil dari Outer Join

SEMIJOIN

Operasi Semijoin didefinisikan yaitu relasi operasi Join dari dua relasi dan kemudian memproyeksikan pada atribut

operan pertama. Salah satu keuntungan dari Semijoin yaitu dapat mengurangi jumlah tupel yang perlu ditangani

Page 10: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

untuk membentuk gabungan. Hal ini terutama berguna untuk komputasi Join dalam sistem terdistribusi. Kita bisa

menulis ulang Semijoin menggunakan Proyeksi dan Join operasi:

adalah himpunan semua atribut untuk R

Ini sebenarnya adalah Semi-Theta Join. Ada varian untuk Semi-Equijoin dan Semi-Natural Join.

Contoh 4.10 : Operasi Semijoin

Daftar rincian lengkap semua staf yang bekerja di cabang di Glasgow.

Jika kita hanya tertarik melihat atribut dari relasi Staff, kita dapat menggunakan operasi Semijoin yang

menhasilkan relasi seperti ditunjukkan pada Gambar 4.11.

Gambar 4.11 – Hasil Operasi Semijoin dari Relasi Staff dan Branch

4.1.4 OPERASI DIVISI

Operasi Divisi berguna untuk query jenis tertentu yang sering terjadi dalam aplikasi database. Diasumsikan relasi R

didefinisikan atas atribut set A dan relasi S didefinisikan lebih dari atribut himpunan B sehingga B ⊆ A (B adalah

himpunan bagian dari A). Misalkan C = A - B, yaitu, C adalah himpunan atribut R yang tidak atribut S. Kami

memiliki definisi berikut dari operasi Divisi.

Kita dapat mengekspresikan operasi Divisi dalam operasi dasar:

T1 ← ΠC (R)

T2 ← ΠC ((T1 × S) - R)

T ← T1 - T2

Contoh 4.11 : Operasi Divisi

Identifikasi semua client yang telah melihat semua properti yang memiliki tiga kamar.

Kita dapat menggunakan operasi Seleksi untuk menemukan semua properti dengan tiga kamar diikuti oleh operasi

Proyeksi untuk menghasilkan hubungan yang hanya berisi angka properti. Kemudian kita dapat menggunakan

operasi Divisi seperti di bawah ini :

Hasil relasi baru ditunjukkan pada Gambar 4.12.

Gambar 4.12 – Hasil dari Operasi Divisi

Page 11: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

4.1.5 AGREGASI DAN PENGELOMPOKAN OPERASI

Hanya dengan mengambil tupel dan atribut dari satu atau lebih relasi tertentu, terkadang kita ingin melakukan

beberapa penjumlahan atau agregasi (Aggregation) data seperti membuat total di akhir laporan, atau beberapa

proses pengelompokan data (Grouping) seperti melakukan pembuatan subtotal dalam sebuah laporan. Operasi

tersebut tidak dapat dilakukan bila menggunakan operasi aljabar relasional. Namun, ada operasi tambahan yang

perlu dibahas, yaitu : Operasi Agregasi dan Operasi Pengelompokkan.

Operasi Agregasi

Fungsi Agregrasi yang utama adalah :

COUNT – memposisikan jumlah nilai dalam atribut terkait.

SUM – menjumlahkan nilai dalam atribut terkait.

AVG – merata-ratakan nilai atribut terkait.

MIN – mengurutkan nilai terkecil dari atribut terkait

MAX – mengurutkan nilai terbesar dari atribut terkait

Contoh 4.12 Operasi Agregasi

(a) Berapa banyak property dengan biaya lebih dari £ 350 per bulan untuk menyewa?

Kita dapat menggunakan fungsi agregasi COUNT untuk menghasilkan relasi R yang ditunjukkan pada Gambar

4.13 (a) sebagai berikut:

(b) Tentukan nilai minimum, maksimum, dan gaji staf rata-rata.

Kita dapat menggunakan fungsi agregat, MIN, MAX, dan Rerata, untuk menghasilkan hubungan R ditunjukkan

pada Gambar 4.13 (b) sebagai berikut:

Gambar 4.13 – Hasil Operasi Agregasi

OPERASI PENGELOMPOKKAN

Bentuk umum dari operasi pengelompokan adalah sebagai berikut:

a1, a2,. . . , an ℑ <Ap ap>, <Aq aq>,. . . , <Az Az> (R)

Dimana R adalah setiap hubungan, a1, a2,. . . , an adalah atribut R yang ke grup, ap, aq,. . . , az

Page 12: Basis Data, Ch 4 - Relasonal Aljabar & Calculus

adalah atribut lain dari R, dan Ap aq,. . . , Az adalah fungsi agregasi. Tuple dari R dipartisi menjadi beberapa

kelompok seperti :

Semua tupel dalam kelompok memiliki nilai yang sama untuk a1, a2,. . . , an;

Tupel dalam kelompok yang berbeda memiliki nilai yang berbeda untuk a1, a2,. . . , an

Kami menggambarkan penggunaan operasi pengelompokan dengan contoh berikut :

Contoh 4.13 : Operasi Pengelompokan

Carilah jumlah staf yang bekerja di setiap cabang dan jumlah gaji mereka.

Pertama-tama kita perlu group tupel berdasarkan jumlah cabag, branchNo, dan kemudian menggunakan fungsi

agregasi COUNT dan SUM untuk menghasilkan hubungan yang diperlukan. Ekspresi aljabar relasional adalah sebagai

berikut:

Relasi hasil ditunjukkan pada Gambar 4.14.

Gambar 4.14 – Hasil Operasi Pengelompokkan

4.2 KALKULUS RELASIONAL

---- || Tidak dibahas ||---

4.3 BAHASA LAINNYA

---- || Tidak dibahas ||---