Relasi Aljabar Dan Kalkulus - Repository UNIKOM
Relasi Aljabar dan
Kalkulus
P e r t e m u a n 9
Topik Bahasan
1. Relasi Aljabar
2. Relasi Kalkulus
3. Relasi Aljabar lanjutan
Bahasa Query
- Bahasa Query formal basis data relasional adalah Bahasa yang digunakan user untuk melakukan request informasi dari basis data
- Kategori Bahasa :
- – Prosedural – Non-prosedural
conto h
- Bahasa “Murni” (“Pure” languages) :
- – Aljabar Relasional – Tuple Relational Calculus – Domain Relational Calculus
- Pure languages membentuk dasar bahasa query yang digunakan user.
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.
Prosedural vs Non Prosedural
Bahasa Non Prosedural Bahasa pemrograman generasi keempat yang dikenal dengan sebutan 4GL dapat dipakai oleh pemakai yang kurang mengetahui hal-hal teknis tentang pemrograman tanpa bantuan pemrogram profesional. Sebagai Bahasa Prosedural Program ditulis dengan contoh pemrogram menggunakan kata-kata yang biasa dipakai manusia, dapat membuat seperti WRITE untuk menampilkan sesuatu di layar dan program dengan READ untuk membaca data dari keyboard. Microsoft Access di lingkungan PC dengan mudah.
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 ).
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 ( ) ρ
Operasi – operasi turunan dari operasi – operasi dasar tersebut adalah:
1. Set intersection ( ) ∩
2. Theta join ( ) θ
3. Natural-join ( )
4. Outer-join ( )
5. Division ( ÷ )
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.
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
Operasi Dasar
1. Selection ( ) σ
2. Projection ( π ) Operasi turunan :
3. Union ( ) ∪ Intersection ( ) ∩
4. Set – difference ( - )
5. Cartesian – product ( X, atau cross
product )6. Rename ( ) ρ
Operasi Selection ( ) σ
- Operasi yang digunakan untuk memilih subset dari tuple-tuple pada suatu tabel. p
(t)
- Notasi : σ
- 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 : =, ≠, >, ≥, <, ≤
Operasi Selection (lanj)
- Contoh : dilakukan operasi σ jenis=“action”
(film) pada tabel film sebagai berikut :
2
5
2
3 A02 action Spiderman 2
2
A01 action Spiderman
kode_film jenis judul jml_keping jml_film
3
kode_film jenis judul jml_keping jml_film
1
5 D01 drama Love Story
2
3 A02 action Spiderman 2
2
A01 action Spiderman
3 H01 horor Evil Death
- Hasilnya : suatu relasi dengan tuple-tuple yang memiliki jenis sama dengan action.
Operasi Projection (p)
- Operasi yang digunakan untuk memilih subset dari kolom-kolom pada suatu tabel
- Notasi : p (t), dimana A , A , …, A
A1,A2,…,An
1 2 n adalah daftar nama atribut dan t adalah nama suatu tabel.
- Hasilnya : suatu tabel dengan atribut yang tercantum pada daftar nama atribut pada operasi.
Operasi Projection (lanj)
- Contoh : dilakukan operasi p kode_film, jenis, judul
(film) pada tabel film sbb:
kode_film jenis judul jml_keping jml_film
A01 action Spiderman
2
3 A02 action Spiderman 2
2
5 D01 drama Love Story
2
3 H01 horor Evil Death
2
2
- Hasilnya :
kode_film jenis judul
A01 action Spiderman A02 action Spiderman 2 D01 drama Love Story H01 horor Evil Death
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.
Operasi Union/Gabungan (lanj)
- tabel r
tabel s A B C 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 A
A A
- p (r) (s) p
aa bb dd cc
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. rdan s harus memiliki jumlah atribut yang sama.
- tabel r tabel s
A B A B
a
1 a 2 a
2 b 3 b
1 A B
- r s
a
2
• 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 r
- p
- tabel s
A
6
7 aa
10
4 dd
4
7 cc
5
aa
A B C
bb
10
Operasi Set Difference
(–)
23
7 dd
12
7 bb
5
7 bb
1
aa
A B C
A (s)
A (r) - p
10
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 :
A B
a
1 b
3 C D a 6 b 5 c
- tabel s :
12 A B C D a 1 a
6 a 1 b
5 a 1 c
12 b 3 a
6 b 3 b
5 b 3 c
12
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
1 2 n ρ (A , A , …, A ) (E) mengembalikan hasil ekspresi E dengan nama X,
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
A01 action Spiderman
2
3 A02 action Spiderman 2
2
5 D01 drama Kabayan
2
3 H01 horor Scream
2
2
Komposisi Operasi-Operasi Relasional
- Tampilkan kode_film, judul dan jml_film
dengan jml_film > 3, maka operasi komposisinya sebagai berikut : p
(σ (film)) kode_film, judul, jml_film jml_film > 3 hasilnya : kode_film judul jml_film
A02 Spiderman 2
5
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
22 dustin
7
45.0 31 lubber
8
55.5 58 rusty
10
35.0
sid bid day
22 101 10/10/96 58 103 11/12/96
Operasi Join (lanj)
- Operasinya : R S sama dengan operasi (RxS), 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
Condition Join/Theta Join
- Menghasilkan suatu relasi gabungan yang memiliki tupel-tupel sesuai dengan kondisi kondisi yang telah ditentukan.
S sama dengan operasi σ (RxS), dengan c c
- R c=condition.
sid snam rating age sid bid day
- Kondisi join : =, >, <, <>, >=, <=
e
22 10 10/10/9
Relasi S
22 dustin
7 45.
1
6
- Relasi R
58 10 11/12/9 31 lubber 8 55.
3
6
Condition Join/Theta Join
(lanj)
- Operasinya : R S
R.sid<S.sid
- Hasilnya :
sid snam rating age sid bid day e
- Kondisi join untuk operator = disebut juga Equi
22 dustin
7 45. 58 103 11/12/9 Join.
6 31 lubber 8 55. 58 103 11/12/9
5
6
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.
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.
natural left join dan natural right join.
Natural Join
- Merupakan Equi Join dengan menghilangkan duplikasi atribut.
• Natural join dapat dibagi lagi menjadi
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-tupel
pada relasi B yang sesuai dengan tupel-tupel pada relasi A serta menghilangkan duplikasi atribut.
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-tupel
pada relasi A yang sesuai dengan tupel-tupel pada relasi B serta menghilangkan duplikasi atribut.
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: (dosen) Π nid, nama_d thn_akademik, smt, hari, jam_ke, Π (mengajar) waktu Dosen Mengajar
Π nid, nama_d (dosen) thn_akademik, smt, hari, Π jam_ke, waktu (mengajar)
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.
Operasi Division (lanj)
- tabel R tabel S1 tabel S2
sno pno
s1 p1 s1 p2 s1 p3 s1 p4 s2 p1 s2 p2 s3 p2 s4 p2 s4 p4
pno
p2
sno
s1 s2 s3 s4
pno
p2 p4
sno
s1 s4 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}
Pekerjaan Rumah nonasabah namanasabah namacabang jumlah
L-001 Anggi Peunayong 3000 L-052 Priyanto PekanBada 4500 L-125 Susillo Lamdingin 7000
nonasabah namanasabah jumlah
L-081 Abidin 7500 L-052 Priyanto 5000 L-175 Suryo 1200
Tabel Peminjam Tabel Penabung
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
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.
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- Bentuk umum dari kalkulus relasional tupel adalah:
TupelVariabel1 Operator {TupelVariabel2 | constant}
Dimana:
TupelVariabel adalah variabel tupel dimana
i=1 sampai n variabel tupel Operator adalah {+, <, >, =,, , } Constant adalah sembarang nilai atau string
- 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:
TupelVariabel1 operator [TupelVariabel2 | constant3] AND TupelVariabel4 operator [TupelVariabel5 | constant5] AND . . OR TupelVariabelm operator [TupelVariabeln | constantp]
- Bentukan tersebut digunakan pada klausa SELECT serta WHERE. Dengan
demikian dapat disimpulkan bahwa
SQL juga dikembangkan berbasis pada kalkulus relasional tupel. - 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.
- Rumus dapat dibangun menggunakan aturan-aturan berikut:
- – Atom adalah rumus
- – Jika P1 adalah rumus, maka
- P1, dan (P1)
- – Jika P1 dan P2 adalah rumus maka P1
P2, P1 P2, atau P1 P2
- – Jika P1(x) adalah rumus di x, dimana x
adalah variabel tupel x, maka r R s S (r[a]=s[a])
Contoh TRC Query
• Cari nama barang yang stoknya masih ada.{ A | P Products (A.ProductName = P.ProductName
P.UnitInStock > 0) }
- Cari nama barang dan harga per unit untuk barang yang stoknya masih ada.
{ A | P Products (A.ProductName = P.ProductName
A.UnitPrice = P.UnitPrice P.UnitInStock > 0) }
Contoh TRC Query (Lanjutan)
• Cari nama pelanggan yang pernah memesan barang pada
tanggal “xx / xx / xxxx” { A | C Customers O Orders (C.CustomerID = O.CustomerID A.ContactName = C.ContactName O.OrderDate = ‘xx / xx / xxxx’) }• Cari nama pelanggan yang pernah memesan barang dengan
kode barang = “xxx”. { A | C Customers O Orders D (Order Detail) (C.CustomerID = O.CustomerID O.OrderID = D.OrderID A.ContactName = C.ContactName D.ProductID = ‘xxx’) }
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.CustomerID = O.CustomerID
O.OrderID = D.OrderID
A.Country = C.Country D.Discount > 0 D.Quantity >
10) }
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.ProductID = O.ProductID
A.ProductName = P.ProductName A.UnitInStock = P.UnitInStock
(O.Discount = 0 O.UnitPrice <
Rp. 50.000,-)) }
Kalkulus Relasional Domain
- Kalkulus Relasional Domain menggunakan variabel-
variabel pada nilai-nilai domain atribut, bukan nilai-
nilai untuk sebuah tupel - Ekspresi pada kalkulus relasional domain berbentuk: {<X1, X2, …., Xn >| P(X1, X2, …, Xn)} Dimana X1, X2, …, Xn menyatakan variabel-variabel domain P menyatakan rumus-rumus yang disusun dari atom- atom sebagaimana pada kalkulus relasional tupel
- Atom pada kalkulus relasional domain adalah salah satu dari:
Є
- – <X1, X2, …, Xn> r, dimana r adalah relasi dengan n atribut dan X1, X2, …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- 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)}
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
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