Relasi Aljabar dan Kalkulus Pertemuan 9 692021 Basis
Relasi Aljabar dan Kalkulus Pertemuan 9 6/9/2021 Basis Data 1
Topik Bahasan 1. Relasi Aljabar 2. Relasi Kalkulus 3. Relasi Aljabar lanjutan 6/9/2021 Basis Data 2
Bahasa Query • Bahasa Query formal basis data relasional adalah Bahasa yang digunakan user untuk melakukan request informasi dari basis data • Kategori Bahasa : – Prosedural contoh – Non-prosedural • Bahasa “Murni” (“Pure” languages) : – Aljabar Relasional – Tuple Relational Calculus – Domain Relational Calculus • Pure languages membentuk dasar bahasa query yang digunakan user. 6/9/2021 Basis Data 3
Sedikit Mengingatkan tentang Bahasa Pemograman • Bahasa pemrograman adalah software bahasa komputer yang digunakan dengan cara merancang atau membuat program sesuai dengan struktur dan metode yang dimiliki oleh bahasa program itu sendiri. 6/9/2021 Basis Data 4
Prosedural vs Non Prosedural Bahasa Prosedural Program ditulis dengan menggunakan kata-kata yang biasa dipakai manusia, seperti WRITE untuk menampilkan sesuatu di layar dan READ untuk membaca data dari keyboard. 6/9/2021 Basis Data Bahasa Non Prosedural Bahasa pemrograman generasi keempat yang dikenal dengan sebutan 4 GL dapat dipakai oleh pemakai yang kurang mengetahui hal-hal teknis tentang pemrograman tanpa bantuan pemrogram profesional. Sebagai contoh pemrogram dapat membuat program dengan Microsoft Access di lingkungan PC dengan mudah. 5
Relasi Formal dari Bahasa Query • Terdapat dua macam bentuk bahasa Query : – Aljabar Relasional : lebih bersifat operasional, sangat berguna untuk merepresentasikan eksekusi perencanaan. – 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). 6/9/2021 Basis Data 6
Aljabar Relasional • Relational Algebra (aljabar relasional) merupakan kumpulan operasi terhadap 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. • Terdapat enam operasi dasar dalam aljabar relasional, yaitu: 1. Selection ( σ ) 2. Projection ( π ) 3. Union ( ∪ ) 4. Set – difference ( - ) 5. Cartesian – product ( X, atau cross product ) 6. Rename ( ρ ) 6/9/2021 Basis Data 7
Operasi – operasi turunan dari operasi – operasi dasar tersebut adalah: 1. Set intersection ( ∩ ) 2. Theta join ( θ ) 3. Natural-join ( ) 4. Outer-join ( 5. Division ( ÷ ) 6/9/2021 ) Basis Data 8
Jenis Operasi • Operasi Unary terdiri dari selection, projection. Disebut operasi unary, karena dapat digunakan hanya pada satu tabel. • Operasi Binary terdiri dari union, intersection, set difference, cartesian product, join dan division. Disebut operasi binary, karena memerlukan sepasang tabel. 6/9/2021 Basis Data 9
Istilah dalam Model Data Relasional • Relasi: Sebuah tabel yang terdiri dari beberapa kolom dan beberapa baris. • Atribut: Kolom pada sebuah relasi (field). • Tupel Baris pada sebuah relasi (record). 6/9/2021 Basis Data 10
Operasi Dasar 1. Selection ( σ ) 2. Projection ( π ) Operasi turunan : Intersection ( ∩) 3. Union ( ∪ ) 4. Set – difference ( - ) 5. Cartesian – product ( X, atau cross product ) 6. Rename ( ρ ) 6/9/2021 Basis Data 11
Operasi Selection (σ) • Operasi yang digunakan untuk memilih subset dari tuple-tuple pada suatu tabel. • Notasi : σp(t) • p disebut selection predicate (yang menentukan pemilihan) • p merupakan formula dari kalkulus perbandingan (proportional calculus) yang berisi terms yang dihubungkan oleh : ^ (and), v (or), ~ (not) setiap term salah satu dari : <atribut> op <atribut> or <konstanta> atau <atribut> op <atribut> dengan op salah satu dari : =, ≠, >, ≥, <, ≤ 6/9/2021 Basis Data 12
Operasi Selection (lanj) • Contoh : dilakukan operasi σjenis=“action”(film) pada tabel film sebagai berikut : kode_film • jenis judul jml_keping jml_film A 01 action Spiderman 2 3 A 02 action Spiderman 2 2 5 D 01 drama Love Story 1 3 H 01 horor Evil Death 3 2 Hasilnya : suatu relasi dengan tuple-tuple yang memiliki jenis sama dengan action. kode_film jenis judul jml_keping jml_film A 01 action Spiderman 2 3 A 02 action Spiderman 2 2 5 6/9/2021 Basis Data 13
Operasi Projection (p) • Operasi yang digunakan untuk memilih subset dari kolom-kolom pada suatu tabel • Notasi : p. A 1, A 2, …, An(t), dimana A 1, A 2, …, An adalah daftar nama atribut dan t adalah nama suatu tabel. • Hasilnya : suatu tabel dengan atribut yang tercantum pada daftar nama atribut pada operasi. 6/9/2021 Basis Data 14
Operasi Projection (lanj) • Contoh : dilakukan operasi pkode_film, jenis, judul(film) pada tabel film sbb: kode_film jenis judul jml_keping jml_film A 01 action Spiderman 2 3 A 02 action Spiderman 2 2 5 D 01 drama Love Story 2 3 H 01 horor Evil Death 2 2 • Hasilnya : 6/9/2021 kode_film jenis judul A 01 action Spiderman A 02 action Spiderman 2 D 01 drama Love Story H 01 horor Evil Death Basis Data 15
Operasi Union/Gabungan ( ) • Operasi yang digunakan untuk menggabungkan hasil dari beberapa query. • Notasi : r s, menghasilkan suatu tabel baru yang elemen barisnya merupakan elemen dari r dan s, tidak ada duplikasi data. • Untuk r s harus valid : r, s harus memiliki jumlah atribut yang sama. 6/9/2021 Basis Data 16
Operasi Union/Gabungan (lanj) • tabel r l tabel s A B C aa 1 7 aa 5 7 bb 5 7 cc 4 4 bb 12 7 dd 10 7 dd 23 10 aa 6 10 • p. A(r) p. A(s) A aa bb dd cc 6/9/2021 Basis Data 17
Operasi Intersection/Irisan ( ) • Notasi : r s, menghasilkan suatu tabel baru dengan elemen barisnya merupakan elemen yang terdapat pada tabel r dan elemen tersebut juga terdapat pada tabel s, tidak ada duplikasi data. r dan s harus memiliki jumlah atribut yang sama. • tabel s. B A r. B A • a 1 a 2 b 3 b 1 r s 6/9/2021 A B a 2 Basis Data 18
Operasi Set Difference (–) • Notasi r – s, hasilnya tabel yang elemen barisnya terdapat pada r tetapi tidak terdapat di s. r dan s harus memiliki jumlah atribut yang sama. • tabel s • tabel r A B C aa 1 7 aa 5 7 bb 5 7 cc 4 4 bb 12 7 dd 10 7 dd 23 10 aa 6 10 • p. A(r) - p. A(s) A bb 6/9/2021 Basis Data 19
Operasi Cross/Cartesian-Product • Notasi r x s, menghasilkan semua kombinasi baris/tuple dari 2 buah tabel, yaitu tabel r dan s. Jumlah atribut tidak harus sama. Contoh : • tabel r : maka r x s : • tabel s : 6/9/2021 A B a 1 A B C D b 3 a 1 a 6 a 1 b 5 C D a 1 c 12 a 6 b 3 a 6 b 5 b 3 b 5 c 12 b 3 c 12 Basis Data 20
Operasi Rename • 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 (A 1, A 2, …, An) (E) mengembalikan hasil ekspresi E dengan nama X, dan atributnya direname menjadi A 1, A 2, …. , An. 6/9/2021 Basis Data 21
Komposisi Operasi-Operasi Relasional • Operasi-operasi aljabar relasional dapat digabungkan dengan ekspresi aljabar relasional lainnya. • Contoh : terdapat tabel film sebagai berikut : kode_film jenis judul jml_keping jml_film A 01 action Spiderman 2 3 A 02 action Spiderman 2 2 5 D 01 drama Kabayan 2 3 H 01 horor 2 2 6/9/2021 Scream Basis Data 22
Komposisi Operasi-Operasi Relasional • Tampilkan kode_film, judul dan jml_film dengan jml_film > 3, maka operasi komposisinya sebagai berikut : pkode_film, judul, jml_film(σjml_film > 3(film)) hasilnya : kode_film A 02 6/9/2021 judul Spiderman 2 Basis Data jml_film 5 23
Operasi Join ( ) • Digunakan untuk menggabungkan dua tabel atau lebih dengan hasil berupa gabungan dari kolom-kolom yang berasal dari tabel-tabel tersebut. • tabel R tabel S sid sname rating age sid bid day 22 dustin 7 45. 0 22 101 10/10/96 31 lubber 8 55. 5 58 103 11/12/96 58 rusty 10 35. 0 6/9/2021 Basis Data 24
Operasi Join (lanj) • Operasinya : R S sama dengan operasi σ(Rx. S), disebut juga Full Join. • Hasilnya : sid sname rating age sid bid day 22 dustin 7 45. 0 22 101 10/10/96 22 dustin 7 45. 0 58 103 11/12/96 31 lubber 8 55. 5 22 101 10/10/96 31 lubber 8 55. 5 58 103 11/12/96 58 rusty 10 35. 0 22 101 10/10/96 58 rusty 10 35. 0 58 103 11/12/96 6/9/2021 Basis Data 25
Condition Join/Theta Join • Menghasilkan suatu relasi gabungan yang memiliki tupel -tupel sesuai dengan kondisi yang telah ditentukan. • R c. S sama dengan operasi σc(Rx. S), dengan c=condition. sid sname • Kondisi join : rating =, >, <, age <>, >=, <= sid bid 22 dustin • Relasi R 31 lubber 58 6/9/2021 rusty 7 45. 0 8 55. 5 10 35. 0 day 22 101 10/10/96 Relasi S 11/12/96 58 103 Basis Data 26
Condition Join/Theta Join (lanj) • Operasinya : R R. sid<S. sid. S • Hasilnya : sid sname rating age sid bid day 22 dustin 7 45. 0 58 103 11/12/96 31 lubber 8 55. 5 58 103 11/12/96 • Kondisi join untuk operator = disebut juga Equi Join. 6/9/2021 Basis Data 27
Left Join • Menghasilkan relasi dengan atribut terdiri dari gabungan atribut dari dua relasi (misalnya relasi A dan B) yang meliputi semua tupel yang ada pada relasi A dan juga hanya tupel-tupel pada relasi B yang sesuai dengan tupel-tupel pada relasi A. 6/9/2021 Basis Data 28
Right Join • Menghasilkan relasi dengan atribut terdiri dari gabungan atribut dari dua relasi (misalnya relasi A dan B) yang meliputi semua tupel yang ada pada relasi B dan juga hanya tupel-tupel pada relasi A yang sesuai dengan tupel-tupel pada relasi B. 6/9/2021 Basis Data 29
Natural Join • Merupakan Equi Join dengan menghilangkan duplikasi atribut. • Natural join dapat dibagi lagi menjadi natural left join dan natural right join. 6/9/2021 Basis Data 30
Natural Left Join • Menghasilkan relasi dengan atribut terdiri dari gabungan atribut dari dua relasi (misalnya relasi A dan B) yang meliputi semua tupel yang ada pada relasi A dan juga hanya tupel pada relasi B yang sesuai dengan tupel pada relasi A serta menghilangkan duplikasi atribut. 6/9/2021 Basis Data 31
Natural Right Join • Menghasilkan relasi dengan atribut terdiri dari gabungan atribut dari dua relasi (misalnya relasi A dan B) yang meliputi semua tupel yang ada pada relasi B dan juga hanya tupel pada relasi A yang sesuai dengan tupel pada relasi B serta menghilangkan duplikasi atribut. 6/9/2021 Basis Data 32
Outer Join • Outer Join adalah operasi untuk menggabungkan operasi selection dan cartesian product dengan suatu kriteria pada kolom yang sama • Contoh Tampilkan nid, nama_d (dari relasi Dosen) dan thn_akademik, smt, hari, jam, ke waktu (dari relasi mengajar) dengan outer join, artinya adalah pada kolom nid, nama_d, pada relasi Dosen akan ditampilkan walaupun dosen tersebut tidak melakukan mengajar Aljabar Relasional: Π nid, nama_d (dosen) Π thn_akademik, smt, hari, jam_ke, waktu (mengajar) 6/9/2021 Basis Data 33
Dosen Mengajar Π nid, nama_d (dosen) (mengajar) 6/9/2021 Π thn_akademik, smt, hari, jam_ke, waktu Basis Data 34
Operasi Division (/) • Notasi : R/S. • Menghasilkan suatu tabel dari dua buah tabel yang terdiri dari atribut dari tabel R yang tidak terdapat pada tabel S dengan tupel-tupel dari tabel R yang memiliki kesamaan dengan tupel-tupel yang ada pada tabel A secara keseluruhan dan tidak terdapat duplikasi data. 6/9/2021 Basis Data 35
Operasi Division (lanj) • tabel R tabel S 1 tabel S 2 sno pno pno s 1 p 2 p 2 s 1 p 3 s 1 p 4 R/S 1 s 2 p 1 sno s 2 p 2 s 1 s 3 p 2 s 4 s 4 p 2 s 3 s 4 p 4 s 4 6/9/2021 p 4 R/S 2 Basis Data 36
Dosen = {nid, nama_d, tempat_lhr, tgl_lhr, jkelamin, alamat, kota, kodepos, gajipokok} Matakuliah={kdmk, nama, sks, semester} Jurusan={kode_jur, nama_jur, jenjang, nama_kajur} Mengajar={nid, thn_akademik, smt, hari, jam_ke, kd_mk, waktu, kelas, kode_jur} 6/9/2021 Basis Data 37
Pekerjaan Rumah Tabel Peminjam nonasabah namacabang jumlah L-001 Anggi Peunayong 3000 L-052 Priyanto Pekan. Bada 4500 L-125 Susillo Lamdingin 7000 Tabel Penabung nonasabah namanasabah jumlah L-081 Abidin 7500 L-052 Priyanto 5000 L-175 Suryo 1200 6/9/2021 Basis Data 38
Kerjakan! • Tampilkan semua dengan jumlah uang pinjaman di bawah 5000 • Tampilkan namanasabah dan namacabang daari tabel peminjam • Tampilkan nonasabah untuk setiap jumlah peminjaman lebih besar dari 4000 • Tampilkan semua namanasabah yang memiliki pinjaman atau tabungan dari bank • Tampilkan semua namanasabah yang memiliki pinjaman dan tabungan dari bank • Tampilkan nonasabah, namanasabah, dan jumlah dari tabel peminjam dan penabung dimana jumlah dari pinjaman dan tabungan lebih besar dari 2500 6/9/2021 Basis Data 39
Kalkulus Relasional • Merupakan alternatif untuk aljabar relasional. • Memungkinkan kita menggambarkan himpunan jawaban tanpa menyatakan secara eksplisit bagaimana jawaban tersebut dihitung. • Memiliki pengaruh yang besar pada desain bahasa query komersial seperti SQL. • Varian kalkulus yang disajikan secara detil disebut Tuple Relational Calculus (TRC) dimana pada TRC mengambil instan (tuple) sebagai nilainya. 6/9/2021 Basis Data 40
Tuple Relational Calculus (TRC) • Kalkulus Relasional Tupel mendeskripsikan informasi tanpa perlu memberikan prosedur/cara spesifik untuk memperoleh informasi tersebut. • Konsep dasar dari kalkulus relasional tupel adalah konsep variabel tupel • Bentuk tuple dari query kalkulus relasional : { t | P( t ) } dimana t adalah sebuah variabel tuple dan P(t) adalah sebuah formula yang menggambarkan t. • Hasil dari query adalah himpunan dari semua tuple t dimana formula P(t) mengevaluasi true 6/9/2021 Basis Data 41
• Bentuk umum dari kalkulus relasional tupel adalah: Tupel. Variabel 1 Operator {Tupel. Variabel 2 | constant} Dimana: Tupel. Variabel adalah variabel tupel dimana i=1 sampai n variabel tupel Operator adalah {+, <, >, =, , , } 6/9/2021 Basis Data 42
• Kontsrain yang berlaku adalah variabel-variabel tupel dan konstanta harus mempunyai domain yang sama antara bagian kiri operator dan bagian kanan operator • Rumus dapat dikoneksikan operator boolean AND, OR dan NOT sehingga bentuk umumnya adalah: Tupel. Variabel 1 operator [Tupel. Variabel 2 | constant 3] AND Tupel. Variabel 4 operator [Tupel. Variabel 5 | constant 5] AND. . OR Tupel. Variabelm operator [Tupel. Variabeln | constantp] 6/9/2021 Basis Data 43
• Bentukan tersebut digunakan pada klausa SELECT serta WHERE. Dengan demikian dapat disimpulkan bahwa SQL juga dikembangkan berbasis pada kalkulus relasional tupel. 6/9/2021 Basis Data 44
• Rumus kalkulus relasional tupel dibentuk dari atom-atom, atom mempunyai salah satu bentuk berikut: – S R, dimana s adalah variabel tupel dari R adalah relasi, kita tidak menginginkan operasi – S[x] op u[y], dimana s dan u adalah variabel tupel, x adalah atribut yang didefinisikan di s, y adalah atribut didefinisikan di u. op adalah operator perbandingan <, (>, =, , , ). Kita perlu atribut x dan y yang mempunyai domain-domain yang anggota nya dapat dibandingkan dengan op. – S[x] op c, dimana s variabel tupel, x adalah atribut yang didefinisikan di s, . op adalah operator perbandingan <, (>, =, , , ). Dan c adalah konstanta dari domain atribut x. 6/9/2021 Basis Data 45
• Rumus dapat dibangun menggunakan aturan berikut: – Atom adalah rumus – Jika P 1 adalah rumus, maka P 1, dan (P 1) – Jika P 1 dan P 2 adalah rumus maka P 1 P 2, atau P 1 P 2 – Jika P 1(x) adalah rumus di x, dimana x adalah variabel tupel x, maka r R s S (r[a]=s[a]) 6/9/2021 Basis Data 46
Contoh TRC Query • Cari nama barang yang stoknya masih ada. { A | P Products (A. Product. Name = P. Product. Name P. Unit. In. Stock > 0) } • Cari nama barang dan harga per unit untuk barang yang stoknya masih ada. { A | P Products (A. Product. Name = P. Product. Name A. Unit. Price = P. Unit. Price P. Unit. In. Stock > 0) } 6/9/2021 Basis Data 47
Contoh TRC Query (Lanjutan) • Cari nama pelanggan yang pernah memesan barang pada tanggal “xx / xxxx” { A | C Customers O Orders (C. Customer. ID = O. Customer. ID A. Contact. Name = C. Contact. Name O. Order. Date = ‘xx / xxxx’) } • Cari nama pelanggan yang pernah memesan barang dengan kode barang = “xxx”. { A | C Customers O Orders D (Order Detail) (C. Customer. ID = O. Customer. ID O. Order. ID = D. Order. ID A. Contact. Name = C. Contact. Name D. Product. ID = ‘xxx’) } 6/9/2021 Basis Data 48
Contoh TRC Query (Lanjutan) Cari negara yang pernah memesan barang yang berdiskon dan jumlah barang yang dipesan diatas 10 unit. { A | C Customers O Orders D (Order Detail) (C. Customer. ID = O. Customer. ID O. Order. ID = D. Order. ID A. Country = C. Country D. Discount > 0 D. Quantity > 10) } 6/9/2021 Basis Data 49
Contoh TRC Query (Lanjutan) Cari nama barang dan sisa stok yang ada untuk barang yang tidak memiliki diskon atau harga barang / unitnya dibawah Rp. 50. 000, -. { A | P Products O (Order Detail) (P. Product. ID = O. Product. ID A. Product. Name = P. Product. Name A. Unit. In. Stock = P. Unit. In. Stock (O. Discount = 0 O. Unit. Price < Rp. 50. 000, -)) } 6/9/2021 Basis Data 50
Kalkulus Relasional Domain • Kalkulus Relasional Domain menggunakan variabel pada nilai-nilai domain atribut, bukan nilai-nilai untuk sebuah tupel • Ekspresi pada kalkulus relasional domain berbentuk: {<X 1, X 2, …. , Xn >| P(X 1, X 2, …, Xn)} Dimana X 1, X 2, …, Xn menyatakan variabel-variabel domain P menyatakan rumus-rumus yang disusun dari atom sebagaimana pada kalkulus relasional tupel 6/9/2021 Basis Data 51
• Atom pada kalkulus relasional domain adalah satu dari: – <X 1, X 2, …, Xn> Є r, dimana r adalah relasi dengan n atribut dan X 1, X 2, …Xn adalah variabel-variabel domain atau konstanta domain – X op y, dimana x dan y adalah variabel domain, op adalah operasi pembandingan (<, >, =, , , ). Variabel x dan y harus merupakan domain-domain yang dapat membandingkan dengan op – X op c, dimana x adalah variabel domain, op adalah operasi pembandingan (<, >, =, , , ) dan c adalah konstanta 6/9/2021 Basis Data 52
• Contoh: Cari nip, nama_d, gajipokok dari dosen, dimana jenis kelaminnya adalah Pria dan gaji pokoknya lebih besar 1200000 {nip| nama_d | gajipokok (Dosen(nid, nama_d, gajipokok) AND jkelamin=‘Pria’ AND gajipokok>1200000)} 6/9/2021 Basis Data 53
Contoh kalkulus relasional yang diterapkan pada SQL SELECT Dosen. nid, Dosen. nama_d, Dosen. gajipokok FROM Dosen WHERE Dosen. jkelamin=‘Pria’AND Dosen. gajipokok>10000000 6/9/2021 Basis Data 54
Operasi SUM, AVERAGE, MIN, MAX, COUNT • SUM – digunakan untuk menghitung jumlah nilai pada suatu kolom. • AVERAGE – digunakan untuk menghitung rata-rata dari suatu kolom. • MIN – digunakan untuk mencari nilai minimal pada suatu kolom. • MAX – digunakan untuk mencari nilai maksimal pada suatu kolom. • COUNT – digunakan untuk menghitung jumlah baris pada suatu kolom. 6/9/2021 Basis Data 55
- Slides: 55