Aljabar R elasional
ALJABAR RELASIONAL adalah kumpulan operasi relasi dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru, dan termasuk kategori prosedural dan juga menyediakan seperangkat operator untuk memanipulasi data. (sebuah bahasa query prosedural yang terdiri dari sekumpulan operasi dimana masukkannya adalah satu atau dua relasi dan keluarannya adalah sebuah relasi baru sebagai hasil dari operasi tersebut). Operasi-operasi dasar dalam aljabar relasional adalah : select, project, union, set difference, dan cartesian product. Disamping operasi-operasi dasar terdapat beberapa operasi tambahan seperti set intersection, natural join, division dan theta join.
a) Terdapat enam operasi dasar dalam aljabar relasional :
1. Selection. 2. Projection.
3. Cartesian – product. 4. Union.
5. Set – difference.
6. Rename.
b) Operasi-operasi turunan dari operasi dasar tersebut adalah
5. Division. 6. Minus.
7. Aggregate function.
Semua operasi tersebut menghasilkan relasi baru.
Pemrogram menggunakan query SQL, DBMS menggunakan aljabar relasional sebagai bahasa antara dalam spesifikasi alogaritma query.
Langkah-langkah dalam DBMS untuk pengolahan query adalah :
1. DBMS melakukan parsing pada string query SQL, dan diterjemahkan kedalam ekspresi aljabar relasional yang dapat menuntun kedalam alogaritma sederhana yang tidak efisien. 2. Lalu bagian optimizer akan mengkonversi akspresi aljabar relasional ini menjadi ekspresi
lain yang ekivalen namun lebih efisien untuk dieksekusi.
3. Query optimizer akan mempersiapkan rencana eksekusi yang kemudian ditransformasikan menjadi kode yang dapat dieksekusi pembangkit kode di DBMS. 4. Karena ekspresi aljabar mempunyai semantik matematis yang presisi, maka sistem dapat
memferifikasi ekivalensi ekspresi yang dioptimasi yang dihasilkan dari manipulasi ekspresi asal. Semantik ini juga memungkinkan perbandingan rencana-rencana evaluasi query yang berbeda.
OPERASI ALJABAR RELASIONAL.
1. Operasi Selection.
2. Operasi projection.
adalah operasi untuk memperoleh kolom-kolom tertentu. Operasi project merupakan operasi unary yang mengirim relasi argumen dengan kolom-kolom tertentu. Dikarenakan relasi adalah himpunan, maka baris-baris duplikasi dihilangkan.
3. Operasi Cartesian-product(x).
adalah operasi untuk menghasilkan tabel hasil perkalian kartesian. 4. Operasi Union.
adalah operasi untuk menghasilkan gabungan tabel dengan syarat kedua tabel memiliki atribut yang sama, yaitu domain atribut ke-i masing-masing tabel harus sama.
5. Operasi Set Difference.
adalah operasi untuk mendapatkan tabel pada suatu relasi, tapi tidak ada pada relasi yang lain.
R-S = {x|x ER dan X !E S}.
Operasi ini dapat dilaksanankan apabila R dan S mempunyai atribut yang tidak sama yang akan ditampilkan, artinya adalah atribut R yang tidak ada di S akan ditampilkan, sedangkan yang sama tidak ditampilkan.
6. Operasi Rename.
adalah operasi untuk menyalin tabel lama ke dalam tabel yang baru. 7. Operasi Set-Intersection.
adalah termasuk kedalam operator tambahan, karena operator ini dapat diverifikasi dari operator dasar seperti berikut :
8. Operasi Theta join.
adalah operasi untuk menggabungkan operasi selection dan cartesian product dengan suatu kriteria\syarat.
9. Operasi Natural Join.
adalah operasi untuk menggabungkan operasi selection dan cartesian product dengan suatu kriteria pada kolom yang sama.
10. Operasi Outer – join.
adalah operasi untuk menggabungkan operasi selection dan cartesian product dengan suatu kriteria pada kolom yang sama.
11. Operasi Devision.
adalah operasi yang banyak digunakan dalam query yang mencakup frase “setiap” atau “untuk semua”, operasi ini juga merupakan pembagian atas tupel-tupel dari dua relasi.
Beberapa penjelasan dan conoth dari operasi relasional:
Definisi:
• Notasi : σp(r)
• p disebut sebgai predikat selection
• Definisi selection : σp(r) = {t | t εr and p(t)}
Di mana p adalah sebuah formula dalam kalkulus proposisi yang terdiri atas term yang dihubungkan dengan
Setiap term adalah satu dari :
<attribute> op <attribute> or <constant>
di mana op adalah salah satu dari: =, ≠, >, ≥. <. ≤ • Contoh selection:
Definisi: • Notasi :
ΠA1, A2, …, Ak(r)
di mana A1, A2 adalah nama atribut, danradalah nama relasi.
• Hasil operasi project didefinisikan sebagai relasi dengan kolom sebanyak k yang diperoleh dengan menghapus kolom yang tidak termasuk dalam kriteria.
• Duplicate rows dihilangkan dari relasi hasil, karena relasi adalah sebuah himpunan. • Contoh : apabila kita ingin memperoleh informasi dari relasi account, tetapi tanpa atribut
branch-name :
Πaccount-number, balance(account)
Definisi:
• Notasi: r U s
• Definisi operasi union :
r U s = {t | t ε r or t ε s} • Kriteria valid r U s:
– 1. r, s harus mempunyai arity sama (jumlah atributnya sama)
– 2. Domain atribut harus kompatibel (misal : kolom kedua relasi r mempunyai tipe data yang sama dengan kolom kedua relasi s)
• Contoh : untuk mencari semua customer yang mempunyai account atau pinjaman : Πcustomer-name(depositor) U Πcustomer-name(borrower).
Definisi:
• Notasi : r – s
• Definisi : r – s = {t | t ε r and t ∉ s}
• Operasi set difference harus dilakukan pada relasi yang kompatibel : – r dan s harus mempunyai arity sama
– Domain atribut r dan s harus kompatibel. e) Contoh Operasi Cartesian-Product
Definisi:
• Notasi : r x s
• Definisi : r x s = {t q | t ε r and q ε s}
• Asumsi atribut r(R) dan s(S) disjoint. (Yaitu R ∩ S = ∅).
Memungkinkan untuk memberi nama dan mengacu hasil dari operasi ekspresi aljabar relasional. Memungkinkan untuk mengacu sebuah relasi dengan lebih dari satu nama. Contoh : ρ x (E) mengembalikan ekspresi E dengan nama. Jika ekspresi aljabar relasional E mempunyai arity n, maka ρx (A1, A2, …, An) (E) mengembalikan hasil ekspresi E dengan nama X, dan atributnya direname menjadi A1, A2, …., An.
Operator ini digunakan untuk memberi nama pada hasil atau output query, keluaran statement selection, dan untuk melihat query pada beberapa waktu. Operator ini dilambangkan dengan rho (ρ) cara penulisan umum operator ini adalah
ρ s(B1, B2, B3,….Bn)(R )
dimana ρ adalah operasi RENAME, S adalah nama relasi yang baru, B1,B2,B3,.. Bn adalah nama atribut(kolom) yang baru, dan R adalah relasi atau tabel yang atributnya kita pilih.
Sebagai contoh, kita akan memilih Date of Birth dan Employee Number dan menamainya ulang dengan ‘Tanggal_Lahir’ dan ‘Nomor_Pegawai’ dari relasi EMPLOYEE
ρ s(Birth_Date, Employee_Number)(EMPLOYEE ) ← ∏dob, empno(EMPLOYEE )
arah panah yang ditulis di atas berarti pertama kali, kita mendapatkan hasil oerasi PROJECT di bagian kanan panah, kemudian mengaplikasikan operasi RENAME pada hasil di bagian kanan panah. Dalam SQL, dapat dituliskan sebagai berikut:
SELECT dob AS ‘Tanggal_Lahir’, empno AS ‘Nomor_Pegawai’ FROM EMPLOYEE
Operasi-operasi Tambahan:
Intersection
Setintersection / Intersection (∩) termasuk ke dalam operator tambahan, karena operator ini dapat diderivikasi dari operator dasar seperti berikut:
Operasi setintersection berfungsi untuk mendapatkan nilai yang ada dalam sebuah tabel relasi dan juga ada dalam tabel relasi lainnya. Simbol “∩“ digunakan untuk menunjukkan operasi
setintersection.
Contoh penggunaan operasi set intersection :
Tampilkan NIP (dari tabel Dosen) Set Intersection dengan NIP (dari tabel Mengajar). Aljabar relasional: πNIP (Dosen) ∩ πNIP (Mengajar)
Hasil: NIP 95002 95003 95004
Natural Join
Operasi naturaljoin berfungsi untuk menggabungkan operasi selection dan cartesian
product menjadi hanya 1 operasi saja. Simbol “⋈“ digunakan untuk menunjukkan operasi
natural join. Operasi naturaljoin hanya menghasilkan tupel yang mempunyai nilai yang sama pada 2 atribut yang bernama sama pada 2 tabel relasi yang berbeda.
Contoh penggunaan operasi natural join :
Tampilkan seluruh data yang ada pada tabel Matakuliah dan tabel Mengajar. Aljabar relasional : Matakuliah ⋈ Mengajar.Kode_mk=Matakuliah.Kode_mk Mengajar
Hasil:
Kd_mk Nama_mk Sks NIP Kelas
MKB3 BDT 3 95002 A
MKB4 ASD 3 95002 A
MPK1 PKN 2 95003 A
MPK1 PKN 2 95003 B
MKB4 ASD 3 95004 B
Theta Join
Operasi thetajoin berfungsi untuk mengkombinasikan tupel dari 2 tabel relasi dimana kondisi dari kombinasi tersebut tidak hanya nilai dari 2 atribut bernama sama, tetapi kondisi yang diinginkan juga bisa menggunakan operator relasional (≤, <, =, >, ≥). Operasi thetajoin
merupakan ekstensi dari natural join.
Tampilkan seluruh data yang ada pada tabel Matakuliah dan tabel Mengajar. Aljabar relasional : Matakuliah ⋈ Mengajar.Kode_mk=Matakuliah.Kode_mk Mengajar
Hasil:
Kd_mk Nama_mk Sk s
NIP Kd_mk Kelas
MKB3 BDT 3 9500
2
MKB3 A
MKB4 ASD 3 9500
2
MKB4 A
MPK1 PKN 2 9500
3
MPK1 A
MPK1 PKN 2 9500
3
MPK1 B
MKB4 ASD 3 9500
4
MKB4 B
Division Operation
Operasi ini akan menghasilkan relasi R(X) yang mengandung semua tuple t[X] dalam R(Z) yang muncul di R1 dalam kombinasi dengan setiap tuple dari R2(Y), dimana Z = X ∪ Y. Operasi DIVISION ini dilambangkan dengan
R1(Z) ∻ R2(Y)
Operator DIVISION ini adalah operator yang paling sulit diimplementasikan di SQL karena tidak ada perintah DIVISION yang ada. Operator DIVISION akan terlihat sebagai lawan dari CARTESIAN PRODUCT; seperti dalam matematika standard, hubungan antara pembagian dan perkalian. Maka dari itu, serangkaian perintah SQL sekarang ini harus dilengkapi dengan operator DIVISION. Sebuah contoh dari implementasi operator DIVISION ini adalah:
Minus
Operasi ini memilih tuple ari satu relasi yang tidak ada di relasi yang lain. Misalkan ada relasi A dan B, operasi A – B dibaca operasi A MINUS B, yang menghasilkan tuple yang ada di A namun tidak ada di B. Implementasi SQL dari operasi MINUS ini adalah:
MINUS
RESULT ← A – B
SQL Statement SELECT dob From A MINUS SELECT dob from B
Aggregate Function
Fungsi aggregate dikenal dengan kata kunci singkatan dari nama operatornya Avg : average value
Min : minimum balue Max : maximum value Sum : sum values
Count: number of values
Outer Join
Operasi ini merupakan ekstensi dari operasi join. Operasi ini menghindari adanya informasi yang hilang, dengan menghitung join, kemudian menambahkan tuple yang tidak mendapatkan pasangan kemudian mengisiskan atribut-atribut yang tidak terdefinisi menggunakan nilai null. Sebenarnya terdapat tiga jenis outer join, yaitu:
Operasi ini mengambil semua tuple di sebelah kiri relasi. Tuple dari relasi sebelah kiri yang tidak memiliki pasangan dari relasi sebelah kanan akan diisi dengan nilai null.
Right outer join
Operasi ini merupakan kebalikan dari left outer join. Operasi ini mengambil semua tuple yang berada di sebelah kanan relasi yang tidak memiliki pasangan dari relasi dari relasi sebelah kiri akan diisi dengan nilai null.
Full outer join
Operasi ini merupakan gabungan dari kedua operasi di atas, dengan mengisikan null pada atribut yang tidak memiliki pasangan di kedua relasi, baik yang kiri maupun yang kanan.[5]
Referensi :
- Database System Concepts Silberschatz-Korth-Sudarshan, McGraw Hill, Fourth Edition, 2002