ni sob ada lagi yang baru yang sebetulnya sih ini tugas ku d kampus tapi tak masalahlah untuk berbagi .Silakan di COPAS aja tak masalah kok sob......!!!
selamat meng- COPAS lah ya sob. . . . .
heheheheheeh.. .. . . . .
selamat meng- COPAS lah ya sob. . . . .
heheheheheeh.. .. . . . .
BAB I
ALJABAR RELASIONAL
1. Aljabar Relasional, Bahasa pada Model Data Relasional
Bahasa yang dipakai pada model relasional disebut dengan bahasa query. Bahasa Query adalah suatu bahasa yang menyediakan fasilitas bagi user untuk mengakses informasi dari basis data. Pada umumnya level bahasa ini lebih tinggi dari bahasa pemrograman standar. Bahasa query dapat dikategorikan sebagai prosedural & non-prosedural.
Dalam bahasa prosedural, user menginstruksikan ke sistem agar membentuk serangkaian operasi dalam basis data untuk mengeluarkan hasil yang diinginkan. Dalam bahasa non-prosedural, user mendeskripsikan informasi yang diinginkan tanpa memberikan proseduSr detail untuk menghasilkan informasi tersebut. Aljabar relasional merupakan bahasa query prosedural, sedangkan kalkulus relasional tupel dan kalkulus relasional domain adalah non-prosedural.
A. Aljabar Relasional
Aljabar relasional adalah 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.
1. Operasi-operasi Dasar
1.1. Select
Operasi select berfungsi untuk menyeleksi tuple-tuple yang memenuhi predikat yang diberikan dari sebuah tabel relasi. Simbol sigma “σ” digunakan untuk menunjukkan operasi select. Predikat muncul sebagai subscript dari σ dan kondisi yang diinginkan yang ditulis dalam predikat. Argumen diberikan dalam tanda kurung yang mengikuti σ dan berisi tabel relasi yang dimaksud.
Contoh penggunaan operasi select :
σNPM = 10296832(NILAI)
Perintah diatas berarti memilih tupel-tupel dari tabel NILAI yang memiliki atribut NPM bernilai 10296832. Hasil dari operasi diatas adalah :
10296832 | KK021 | 60 | 75 |
10296832 | KD132 | 40 | 30 |
1.2. Project
Operasi project berfungsi untuk memilih nilai atribut-atribut tertentu saja dari sebuah tabel relasi. Simbol phi “Π” digunakan untuk menunjukkan operasi project. Predikat muncul sebagai subscript dari Π dan hanya nama atribut yang diinginkan yang ditulis dalam predikat. Argumen diberikan dalam tanda kurung yang mengikuti Π dan berisi tabel relasi yang dimaksud.
Contoh penggunaan operasi project :
Π KDMK,SKS(MKUL)
Perintah diatas berarti memilih nilai atribut KDMK dan SKS dari tabel MKUL. Hasil dari operasi diatas adalah :
KK021 | 2 |
KD132 | 3 |
KU122 | 2 |
1.3. Union
Operasi union berfungsi untuk mendapatkan gabungan nilai atribut dari sebuah tabel relasi dengan nilai atribut dari tabel relasi lainnya. Simbol “∪” digunakan untuk menunjukkan operasi union. Operasi union bernilai benar bila terpenuhi 2 kondisi, yaitu : Derajat dari 2 tabel relasi yang dioperasikan harus sama dan domain dari atribut yang dioperasikan juga harus sama.
Contoh penggunaan operasi union :
Misalkan terdapat 2 tabel relasi bernama ASLABSI dan ASLABTI seperti dibawah :
ASLABSI
NPM | Nama | Kelas |
10107591 | Eko Putra | 3KA07 |
10107971 | Keque Irfan | 3KA07 |
18108012 | Riza Rulham | 3KA07 |
ASLABTI
NPM | Nama | Kelas |
11107891 | M. Ali Nurdin | 3KA07 |
18108012 | Riza Rulham | 3KA07 |
11107611 | Soli Kurniawan | 3KA07 |
dan dari 2 tabel relasi diatas dilakukan operasi union sebagai berikut :
Π Nama(ASLABSI) ∪ Π Nama(ASLABTI)
Perintah diatas berarti menggabungkan hasil dari operasi project terhadap tabel ASLABSI dengan hasil dari operasi project terhadap tabel ASLABTI. Hasil dari operasi diatas adalah :
Eko Putra |
Keque Irfan |
M. Ali Nurdin |
Riza Rulham |
Soli Kurniawan |
Perhatikan bahwa nama Riza Rulham hanya muncul sekali pada hasil operasi, ini karena relasi adalah set sehingga nilai duplikat dihilangkan.
1.4. Set Difference
Operasi set difference berfungsi untuk mendapatkan nilai yang ada dalam sebuah tabel relasi, tapi tidak ada dalam tabel relasi lainnya. Simbol “-“ digunakan untuk menunjukkan operasi set difference.
Contoh penggunaan operasi set difference :
Π Nama(ASLABSI) – Π Nama(ASLABTI)
Perintah diatas berarti mendapatkan nilai atribut Nama yang terdapat di tabel ASLABSI, tapi tidak terdapat di tabel ASLABTI. Hasil dari operasi diatas adalah :
Eko Putra |
Keque Irfan |
1.5. Cartesian Product
Operasi cartesian product berfungsi untuk mengkombinasikan informasi yang ada dalam 2 tabel relasi dan menghasilkan sebuah tabel relasi yang baru. Simbol “x“ digunakan untuk menunjukkan operasi set difference.
Contoh penggunaan operasi cartesian product :
ASLABTI x MKUL ⟹ tabel relasi baru
Perintah diatas berarti mengkombinasikan seluruh tupel yang ada pada tabel ASLABTI dengan tabel MKUL. Hasil dari operasi diatas adalah :
11107891 | M. Ali Nurdin | 3KA07 | KK021 | P. Basis Data | 2 |
11107891 | M. Ali Nurdin | 3KA07 | KD132 | SIM | 3 |
11107891 | M. Ali Nurdin | 3KA07 | KU122 | Pancasila | 2 |
18108012 | Riza Rulham | 3KA07 | KK021 | P. Basis Data | 2 |
18108012 | Riza Rulham | 3KA07 | KD132 | SIM | 3 |
18108012 | Riza Rulham | 3KA07 | KU122 | Pancasila | 2 |
11107611 | Soli Kurniawan | 3KA07 | KK021 | P. Basis Data | 2 |
11107611 | Soli Kurniawan | 3KA07 | KD132 | SIM | 3 |
11107611 | Soli Kurniawan | 3KA07 | KU122 | Pancasila | 2 |
Operasi-operasi Tambahan
1.6. Set Intersection
Operasi set intersection berfungsi untuk mendapatkan nilai yang ada dalam sebuah tabel relasi dan juga ada dalam tabel relasi lainnya. Simbol “∩“ digunakan untuk menunjukkan operasi set intersection.
Contoh penggunaan operasi set intersection :
Π Nama(ASLABSI) ∩ Π Nama(ASLABTI)
Perintah diatas berarti mendapatkan nilai atribut Nama yang terdapat di tabel ASLABSI dan juga terdapat di tabel ASLABTI. Hasil dari operasi diatas adalah :
Riza Rulham |
1.7. Natural Join
Operasi natural join memungkinkan kita untuk menggabungkan operasi select dan cartesian product menjadi hanya 1 operasi saja. Simbol “⋈“ digunakan untuk menunjukkan operasi natural join. Operasi natural join 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 :
Π NPM,KDMK,MID(MHS ⋈ NILAI)
Perintah diatas berarti mendapatkan nilai dari operasi project dengan predikat NPM, KDMK, dan MID dan argumen hasil dari operasi natural join antara tabel MHS dengan tabel NILAI. Hasil dari operasi diatas adalah :
10296832 | KK021 | 60 |
10296832 | KD132 | 40 |
10296126 | KD132 | 70 |
31296500 | KK021 | 55 |
41296525 | KU122 | 90 |
50096487 | KD132 | 80 |
21196353 | KU122 | 75 |
1.8. Division
Operasi division berfungsi untuk query yang memasukkan frase “untuk semua/seluruh”. Simbol “÷“ digunakan untuk menunjukkan operasi division.
Contoh penggunaan operasi division :
Misalkan terdapat 3 tabel relasi bernama ACCOUNT, BRANCH, dan DEPOSITOR seperti dibawah :
dan dari 3 tabel relasi diatas dilakukan operasi division sebagai berikut :
Π customer-name,branch-name(DEPOSITOR ⋈ ACCOUNT) ÷ Π branch-name(σbranch-city=”Brooklyn”(BRANCH))
Dengan asumsi operasi project awal adalah relasi r1 dan akhir adalah r2, perintah diatas berarti mendapatkan nama pelanggan yang muncul pada hasil relasi r2 untuk semua nama cabang hasil relasi r1. Hasil dari operasi diatas adalah :
Johnson |
1.9. Theta Join
Operasi theta join berfungsi jika kita ingin mengkombinasikan tupel dari 2 tabel relasi dimana kondisi dari kombinasi tersebut tidak hanya kesamaan nilai dari 2 atribut bernama sama, tetapi kondisi yang diinginkan juga bisa menggunakan operator relasional (≤, <, =, >, ≥). Operasi theta join merupakan ekstensi dari natural join.
BAB II
KALKULUS RELASIONAL
Pengenalan Kalkulus Relasional Tupel dan Domain
· Kalkulus Relasional
Bahasa query non-prosedural à pemakai menspesifikasikan data apa yang dibutuhkan tanpa menspesifikasikan bagaimana untuk mendapatkannya.
A. Kalkulus Relasional Tupel
Kalkulus relasional tupel adalah bahasa query yang non prosedural. Bahasa ini mendeskripsikan informasi yang diinginkan tanpa memberi prosedurnya secara detil untuk mendapatkan informasi tersebut. Kalkulus relasional tupel merupakan basis untuk bahasa query QUEL.
Sebuah query dalam bahasa ini ditulis :
{ t | P(t) }
artinya, semua tuple t sedemikian sehingga predikat P adalah benar untuk t. Dengan mengikuti notasi terdahulu, kita gunakan t[A] untuk menyatakan nilai tuple t pada atribut A, dan t ∈ r untuk menyatakan bahwa tuple t berada dalam relasi r.
Dalam kalkulus relasional ada 2 notasi yang penting, yang pertama adalah “terdapat beberapa (there exists)” yang ditulis :
∃ t ∈ r ( Q(t) )
artinya, terdapat beberapa tuple t anggota relasi r sedemikian sehingga bahwa predikat Q(t) adalah benar.
Yang kedua adalah “untuk seluruh (for all)” yang ditulis :
∀ t ∈ r ( Q(t) )
artinya, untuk seluruh tupel t anggota relasi r sedemikian sehingga bahwa predikat Q(t) adalah benar.
B. Kalkulus Relasional Domain
Kalkulus relasional domain juga adalah bahasa query yang non prosedural dan karenanya berhubungan dekat dengan kalkulus relasional tupel. Berbeda dengan kalkulus relasional tupel, bahasa ini menggunakan variabel domain yang mengambil nilai dari domain atribut, nbukan dari nilai seluruh tupel. Kalkulus relasional domain merupakan basis untuk bahasa query QBE.
Sebuah ekspresi dalam kalkulus relasional domain adalah berbentuk :
{ < x1, x2, . . . , xn > | P(x1, x2, . . . , xn) }
dimana x1, x2, . . . , xn merepresentasikan variabel-variabel domain. P merepresentasikan sebuah formula yang terdiri dari atom-atom. Sebuah atom dalam kalkulus relasional domain dapat berupa salah satu dari bentuk berikut ini :
- < x1, x2, . . . , xn > ∈ r, dimana r adalah relasi dengan n atribut dan x1, x2, . . . , xn adalah variabel domain atau konstanta domain.
- x ϴ y, dimana x dan y adalah variabel domain dan ϴ adalah operator relasional (≤, <, =, ≠, >, ≥). Kita membutuhkan atribut x dan y mempunyai domain yang bisa diperbandingkan dengan ϴ.
- x ϴ c, dimana x adalah variabel domain, ϴ adalah operator relasional, dan c adalah sebuah konstanta.
Dalam kalkulus relasional domain, seperti halnya dalam kalkulus relasional tupel, kita juga menggunakan notasi “terdapat beberapa (there exists)” dilambangkan dengan “∃” dan “untuk seluruh (for all)” dilambangkan dengan “∀”.