Relasi Aljabar dan
Kalkulus
Topik Bahasan
1. Relasi Aljabar
2. Relasi Kalkulus
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
• 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
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.
Bahasa Non Prosedural
Bahasa
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
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 ( - )
Operasi – operasi turunan dari operasi – operasi dasar tersebut adalah:
1. Set intersection ( )∩
2. Theta join ( )θ
3. Natural-join ( )
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
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
Operasi Dasar
1. Selection ( )σ
2. Projection ( π )
5. Cartesian – product ( X, atau cross product )
3. Union ( )∪
4. Set – difference ( - )
6. Rename ( )ρ
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>
Operasi Selection (lanj)
• Contoh : dilakukan operasi σjenis=“action”(film) pada tabel film
sebagai berikut :
• Hasilnya : suatu relasi dengan tuple-tuple yang memiliki jenis sama dengan action.
kode_film jenis judul jml_keping jml_film A01 action Spiderman 2 3 A02 action Spiderman 2 2 5 D01 drama Love Story 1 3 H01 horor Evil Death 3 2
Operasi Projection (
p
)
•
Operasi yang digunakan untuk memilih
subset dari kolom-kolom pada suatu tabel
•
Notasi :
p
A1,A2,…,An(t)
, dimana
A
1, A
2,
…
, A
nadalah daftar nama atribut dan
t
adalah
nama suatu tabel.
Operasi Projection (lanj)
• Contoh : dilakukan operasi pkode_film, jenis, judul(film) pada tabel film
sbb:
• Hasilnya :
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
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.
Operasi Union/Gabungan (lanj)
A B C
aa 1 7
bb 5 7
bb 12 7
dd 23 10
•
tabel r
•
p
A(r)
p
A(s)
tabel
s
A B C
aa 5 7
cc 4 4
dd 10 7
aa 6 10
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 r tabel s
• r s
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 r
• pA(r) - pA(s)
A B C aa 1 7 bb 5 7 bb 12 7 dd 23 10
• tabel s
A bb
A B C aa 5 7
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 :
A B a 1 b 3 C D a 6 b 5 c 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
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 (A1, A2, …, An) (E)
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
Komposisi Operasi-Operasi Relasional
• Tampilkan kode_film, judul dan jml_film
dengan jml_film > 3, maka operasi komposisinya
sebagai berikut :
p
kode_film, judul, jml_film(
σ
jml_film > 3(film))
hasilnya :
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
Operasi Join (lanj)
• Operasinya : R S sama dengan operasi (RxS), disebut σ
juga Full Join.
• Hasilnya :
Condition Join/Theta Join
• Menghasilkan suatu relasi gabungan yang
memiliki tupel-tupel sesuai dengan kondisi kondisi yang telah ditentukan.
• R cS sama dengan operasi σc(RxS), dengan
c=condition.
• Kondisi join : =, >, <, <>, >=, <= • Relasi R Relasi S
sid snam
e rating age 22 dustin 7 45.
0 31 lubber 8 55.
5
sid bid day 22 10
1 10/10/96 58 10
3 11/12/96
Condition Join/Theta Join
(lanj)
• Operasinya : R R.sid<S.sidS
• Hasilnya :
• Kondisi join untuk operator = disebut juga Equi
Join.
sid snam
e rating age sid bid day 22 dustin 7 45.
0 58 103 11/12/96 31 lubber 8 55.
Left Join
•
Menghasilkan relasi dengan atribut
Right Join
•
Menghasilkan relasi dengan atribut
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
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
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, Π
Dosen
Mengajar
nid, nama_d
Π (dosen) thn_akademik, smt, hari, Π
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
Operasi Division (lanj)
• tabel R tabel S1 tabel S2
R/S1 R/S2
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}
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
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
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
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.
•
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 {+, <, >, =,
,
,
}
• 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
•
Bentukan tersebut digunakan pada
klausa SELECT serta WHERE. Dengan
demikian dapat disimpulkan bahwa
SQL juga dikembangkan berbasis
• 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
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
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)
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
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 <
Kalkulus Relasional Domain
• Kalkulus Relasional Domain menggunakan
variabel-variabel pada 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
• 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
• Contoh:
Cari nip, nama_d, gajipokok dari dosen, dimana jenis kelaminnya adalah Pria dan gaji pokoknya lebih besar 1200000
{nip| nama_d | gajipokok
Contoh kalkulus relasional yang
diterapkan pada SQL
SELECT Dosen.nid,Dosen.nama_d,Dosen.gajipokok FROM Dosen
WHERE
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