Relational Algebra
Safrina Amini, M.T.I.
Agus Umar Hamdani, M.Kom
1
Pokok Bahasan :
• Tentang Aljabar (Algebra)
• Arti dari aljabar relasional
• Operasi dalam aljabar relasional
• Cara membentuk kueri dalam aljabar
relasional
2
Tentang Aljabar (Algebra)
• Teori Aljabar atau Algebra diciptakan oleh
Muḥammad bin Musa al-Khawarizmi.
• Beliau adalah seorang ahli matematika, astronomi,
astrologi dan geografi dari Persia (Iran sekarang).
• Lahir sekitar 780 M di Khawarizmi (sekarang Khiva,
Uzbekistan) dan meninggal sekitar 850 di Baghdad.
• Hampir sepanjang hidupnya, ia bekerja sebagai
dosen di Sekolah Kehormatan di Baghdad yang
didirikan oleh Khalifah Abbasiyah Al-Ma'mun, di
mana ia mempelajari ilmu alam dan matematika,
termasuk mempelajari terjemahan manuskrip
bahasa Sanskerta dan Yunani.
3
Tentang Aljabar (Algebra)
• Buku pertamanya, Al Kitab Al Mukhtasar Fi Hisab
Al Jabr Wal Muqabala atau Populer dengan nama
“Aljabar, Algebra”, merupakan buku pertama yang
membahas solusi sistematis dari notasi linier dan
kuadrat.
• Beliau dikenal sebagai Bapak Aljabar / Algebra.
• Aljabar / Algebra merupakan bagian penting dari
model data, dikarenakan membahas mengenai
mekanisme untuk manipulasi data atau bahasa
query untuk mengambil dan memperbarui data.
4
PENGERTIAN ALJABAR RELASIONAL
• Aljabar relasional adalah bahasa teoritis
dengan operasi yang bekerja pada satu
atau lebih relasi untuk mendefinisikan
relasi lain tanpa mengubah relasi aslinya.
• Baik operand maupun hasilnya adalah
relasi.
• Keluaran dari satu operasi dapat menjadi
masukan bagi operasi lainnya.
5
PENGERTIAN ALJABAR RELASIONAL
• Hal ini memungkinkan ekspresi untuk
disarangkan (nested) dalam aljabar
relasional, sama seperti kita dapat
menyusun operasi aritmatika. Properti ini
disebut closure: relasi ditutup di bawah
aljabar, seperti bilangan ditutup di bawah
operasi aritmatika.
6
PENGERTIAN ALJABAR RELASIONAL
• Ekspresi Aljabar – terdiri dari operator and
operand atomik.
a. Operand Atomik adalah :
• Variabel yang mewakili relasi.
• Konstanta, yang merupakan hubungan
terbatas.
b. Kelas-kelas Operasi :
• Sekumpulan operasi.
• Operasi yang menghilangkan bagian dari
suatu relasi.
• Operasi yang menggabungkan tupel dari 2
relasi.
7
PENGERTIAN ALJABAR RELASIONAL
• Ekspresi Aljabar – terdiri dari Operator dan
Operand Atomic.
– Dalam Aljabar Aritmatika, operand atomik adalah
variabel seperti X dan konstanta seperti 15.
– Operatornya adalah + - / * (contoh).
– Contoh Ekspresi Aljabar g: (X + Y) * Z
8
PENGERTIAN ALJABAR RELASIONAL
• 5 operasi dasar dalam Aljabar Relasional,
yaitu : Selection, Projection, Cartesian
product, Union, and Set Difference.
• Operasi diatas melakukan sebagian besar
operasi pengambilan data yang diperlukan.
• Operasi lainnya adalah operasi Join,
Intersection, and Division.
9
PENGERTIAN ALJABAR RELASIONAL
• Operasi Selection and Projection disebut unary
operations, karena mereka beroperasi pada
satu relasi.
– Unary relationship adalah himpunan relasi di mana
hanya satu himpunan entitas yang berpartisipasi
dalam himpunan relasi.
• Operasi lain bekerja pada pasangan relasi dan
disebut dengan binary operation.
– Binary relationship adalah himpunan relasi di mana
dua relasi entitas berpartisipasi dalam himpunan relasi.
10
PENGERTIAN ALJABAR RELASIONAL
Jenis-jenis Operasi Dasar dalam Aljabar Relasional / Relational
Algebra :
11
PENGERTIAN ALJABAR RELASIONAL
12
STUDI KASUS :
SKEMA RELASI PADA PADA DREAMHOME
13
STUDI KASUS : SKEMA RELASI PADA DREAMHOME
• Branch (BranchNo, street. City, postcode).
• Staff (staffNo, fName, lName, position, sex,
DOB, salary, b.branchNo).
• PropertyForRent (propertyNo, street, city,
postcode, type, rooms, rent, ownerNo,
staffNo, branchNo)
14
OPERASI SELECTION (PEMBATASAN)
• predicate (R)
– (dibaca Sigma).
– Bekerja pada satu relasi R dan mendefinisikan
relasi yang hanya berisi tupel (baris) R yang
memenuhi kondisi yang ditentukan (predikat).
• Key Ideas : Memilih atau menyeleksi baris (tupel,
row, record) yang akan ditampilkan.
15
CONTOH OPERASI SELECTION (PEMBATASAN)
• Membuat daftar semua staf dengan gaji
lebih besar dari £10,000.
salary > 10000 (Staff)
• Hasil kuerinya adalah :
Salary > 10000
16
OPERASI PROYEKSI (PROJECTION)
• col1, . . . , coln(R)
– Π (dibaca Phi).
– Bekerja pada satu relasi R dan mendefinisikan
relasi yang berisi subset vertikal R, mengekstrak
nilai atribut tertentu dan menghilangkan
duplikat.
• Key Ideas : Memilih atau menyeleksi kolom (field,
atribut) yang akan ditampilkan.
17
CONTOH OPERASI PROYEKSI (PROJECTION)
• Buat daftar gaji untuk semua staf, yang hanya
menampilkan informasi / atribut detail yang terdiri
atas staffNo, fName, lName, dan gaji.
staffNo, fName, lName, salary (Staff)
• Hasil kueri : Menampilkan
atribut yang
diingingkan.
18
OPERASI UNION (PENGGABUNGAN)
• RS
– υ (dibaca upsilon)
– Gabungan dua relasi R dan S mendefinisikan
relasi yang berisi semua tupel R, atau S, atau R
dan S, tupel dengan nilai duplikat dieliminasi.
– R dan S harus kompatibel dalam Union.
• Jika R dan S masing-masing memiliki tupel I dan J,
penyatuan diperoleh dengan menggabungkan
mereka menjadi satu relasi dengan maksimum (I +
J) tupel.
• Key Ideas : menggabungkan semua tupel (row,
record) dari 2 (dua) relasi dan mengeliminasi
duplikasi baris data.
19
CONTOH OPERASI UNION (PENGGABUNGAN)
• Membuat daftar semua kota dari relasi
Branch dan relasi PropertyForRent.
city(Branch) city(PropertyForRent)
• Hasil kueri :
20
OPERASI SET DIFFERENCE
• R–S
– - (dibaca minus)
– Mendefinisikan relasi yang terdiri dari tupel-tupel
yang ada pada relasi R, tetapi tidak ada di relasi
S.
– R dan S harus kompatibel dalam Union.
• Key Ideas : Menampilkan semua baris (tupel, row,
record) yang di tabel R, tetapi tidak ada di tabel S.
21
CONTOH OPERASI SET DIFFERENCE
• Membuat daftar semua kota yang ada di
relasi Branch, tetapi tidak ada di relasi
PropertyForRent.
city(Branch) – city(PropertyForRent)
• Hasil kuerinya :
22
OPERASI INTERSECTION
• RS
– Mendefinisikan relasi yang terdiri dari himpunan
semua tupel yang ada di R dan S.
– Irisan pada dua relasi R dan S hanya dapat
dihitung, jika R dan S kompatibel dengan union
(Kedua relasi ini harus memiliki jumlah atribut
yang sama dan atribut yang sesuai dalam dua
relasi memiliki domain yang sama).
23
OPERASI INTERSECTION
• Ekspresi Intersection menggunakan operasi
dasar :
R S = R – (R – S)
• Key Ideas : Menampilkan semua baris (tupel,
row, record) yang memiliki pasangan dari tabel R
dan tabel S.
24
CONTOH OPERASI INTERSECTION
• Membuat daftar semua kota yang ada di
relasi Branch dan setidaknya ada satu tupel
di relasi ProperyForRent.
city(Branch) city(PropertyForRent)
• Hasil kueri :
25
OPERASI CARTESIAN PRODUCT
• RXS
– Mendefinisikan relasi yang merupakan rangkaian
dari setiap tupel relasi R dengan setiap tupel
relasi S.
• Key Ideas : Menampilkan semua tupel (row,
record) baik yang memiliki pasangan maupun tidak
memiliki pasangan dari tabel R dan tabel S.
26
CONTOH OPERASI CARTESIAN PRODUCT
• Buat daftar nama dan komentar dari semua Client
yang telah melihat properti yang disewakan.
(clientNo, fName, lName(Client)) X (clientNo, propertyNo, comment
(Viewing))
• Hasil kuerinya :
27
CONTOH OPERASI CARTESIAN PRODUK DAN
SELECTION
• Gunakan operasi Selection untuk mengekstrak tupel yang
mana relasi Client memiliki relasi dengan Viewing, yaitu
atribut clientNo.
Client.clientNo = Viewing.clientNo(( clientNo, fName,
lName(Client)) ( clientNo, propertyNo,
comment(Viewing)))
Cartesian product and Selection can be reduced to a single
operation called a Join.
28
OPERASI JOIN
• Operasi Join adalah turunan dari operasi
Cartesian Product.
• Seperti operasi Selection, operasi Join
menggunakan predikat gabungan sebagai
rumus seleksi, pada Cartesion Produk dari
dua relasi sebagai operand.
• Salah satu operasi yang paling sulit untuk
diterapkan secara efisien dalam RDBMS
dan satu alasan mengapa RDBMS memiliki
masalah kinerja intrinsik.
29
OPERASI THETA JOIN (-join)
• R F S
– Mendefinisikan relasi yang berisi tupel yang
memenuhi predikat F dari operasi Cartesius
Product dari R dan S.
– Predikat F berbentuk adalah form R.ai S.bi
dimana mungkin salah satu operator
perbandingan berikut (<, , >, , =, ).
• Key Ideas : Menampilkan semua baris (tupel,
row, record) yang memiliki pasangan dari tabel R
dan tabel S.
30
OPERASI THETA JOIN (-join)
• Menulis ulang gabungan Theta Join menggunakan
operasi Selection dan Cartesion Product dasar.
R F S = F(R S)
Derajat gabungan Theta adalah jumlah derajat
dari hubungan operand R dan S.
Jika predikat F hanya berisi persamaan (=), maka
disebut dengan Operasi Equijoin.
31
OPERASI THETA JOIN (-join)
• Membuat daftar nama dan komentar dari semua
Clieny yang telah melihat properti yang disewakan.
(clientNo, fName, lName(Client))
Client.clientNo = Viewing.clientNo (clientNo, propertyNo,
comment(Viewing))
32
OPERASI NATURAL JOIN
• R S
– Operasi ini adalah kasus khusus pada operasi
Equijoin, di mana kondisi kesetaraan berlaku
pada semua atribut yang memiliki nama yang
sama dalam relasi R dan S (relasi yang
menerapkan operasi gabungan).
– Saat menerapkan Natural Join pada dua relasi,
tidak perlu menuliskan kondisi kesetaraan
secara eksplisit.
33
CONTOH OPERASI NATURAL JOIN
• Membuat daftar nama dan komentar dari semua
klien yang telah melihat properti yang disewakan.
(clientNo, fName, lName(Client)) (clientNo, propertyNo, comment(Viewing))
• Hasil kueri :
34
OPERASI LEFT OUTER JOIN
• Untuk menampilkan baris yang tidak memiliki
nilai yang cocok di kolom gabungan, dapat
menggunakan operasi Outer join.
•R S
– Left Outer Join adalah operasi join dimana
tupel dari R (relasi di sebelah kiri) yang tidak
memiliki nilai yang cocok pada kolom S
dimasukan ke dalam hasil kueri.
• Key Ideas : Menampilkan semua baris (tupel,
row, record) yang ada di tabel R, sekalipun tidak
memiliki pasangan baris (tupel, row, record) dari
tabel S.
35
CONTOH OPERASI LEFT OUTE R JOIN
• Menghasilkan laporan status pada tampilan
properti.
propertyNo, street, city(PropertyForRent) Viewing
• Hasil kueri :
36
OPERASI RIGHT OUTER JOIN
•R S
– Right Outer Join adalah operasi Join di mana
tupel dari S (relasi di sebelah kanan) yang tidak
memiliki nilai yang cocok di kolom R dimasukkan
dalam hasil kueri.
• Key Ideas : Menampilkan semua baris (tupel, row,
record) yang ada di tabel S, sekalipun tidak memiliki
pasangan baris (tupel, row, record) dari tabel R.
37
OPERASI RIGHT OUTER JOIN
• Menampilkan semua tupel di relasi Employee,
meskipun tidak memiliki nilai yang cocok dengan
relasi Student.
38
OPERASI FULL OUTER JOIN
•R S
– Full Outer Join adalah operasi Join di mana
tupel dari S (relasi di sebelah kanan) baik
memiliki nilai yang cocok maupun tidak di kolom
R (relasi di sebelah kiri) dimasukkan dalam hasil
kueri.
• Key Ideas : Menampilkan semua baris (tupel,
row, record) yang ada di tabel R baik memiliki
pasangan maupun tidak memiliki pasangan baris
(tupel, row, record) dari tabel S.
39
OPERASI RIGHT OUTER JOIN
• Menampilkan semua tupel di relasi Employee, baik
memiliki nilai yang cocok maupun tidak dengan
relasi Student.
40
OPERASI SEMI JOIN
• R F S
– Operasi Semi Join mencocokkan baris-baris
dari dua relasi R dan S, kemudian
menunjukkan baris-baris relasi yang cocok
dimana nama kondisinya disebutkan di sisi
kanan operator ⋉ .
Kita dapat menulis ulang operasi Semi Join
menggunakan operasi Projection dan Join :
R F S = A(R F S)
41
CONTOH OPERASI SEMI JOIN
• Membuat daftar detail lengkap dari semua staf
yang bekerja di cabang di Glasgow.
Staff Staff.branchNo=Branch.branchNo (city=‘ Glasgow’(Branch))
• Hasil kueri :
42
OPERASI DIVISION
• RS
Operator divisi R ÷ S dapat diterapkan jika dan
hanya jika:
– Atribut S adalah subset yang tepat dari Atribut
R.
– Relasi yang dikembalikan oleh operator divisi
akan memiliki atribut = (Semua atribut R -
Semua Atribut S)
– Relasi yang dikembalikan oleh operator divisi
akan mengembalikan tupel tersebut dari relasi
R yang terkait dengan setiap tupel S.
43
OPERASI DIVISION
• RS
Ekspersi Division menggunakan operasi dasar :
T1 C(R)
T2 C((S X T1) – R)
T T 1 – T2
Key Ideas : Menghasilkan suatu tabel dari 2 buah tabel
yang terdiri dari atribut dari tabel R yang tidak terdapat
pada tabel S dengan tuple-tuple yang memiliki kesamaan
dengan tuple-tuple yang ada di tabel S secara
keseluruhan dan tidak terdapat duplikasi data.
44
CONTOH OPERASI DIVISION
• Identifikasi semua Client yang telah melihat semua
properti dengan kamar=3.
(clientNo, propertyNo(Viewing))
(propertyNo(rooms = 3 (PropertyForRent)))
Ket : Tupel dengan atribut propertyNo pata tabel
Viewing memiliki pasangan propertyNo pada tabel
PropertyForRent (PG4, PG36) dengan ClientNo (CR56).
45
OPERASI AGGREGAT (AGGREGATE)
• AL(R)
– Menerapkan daftar fungsi agregat / Aggregate
List (AL), ke relasi R untuk menentukan relasi
pada daftar agregat.
– AL mengandung satu atau lebih pasangan
(<aggregate_function> <attribute>).
• Fungsi aggregat utama : COUNT, SUM, AVG,
MIN, and MAX.
• Key Ideas : Menerapkan fungsi aggregasi (Count, Sum,
AVG, Min dan Max dalam satu atau lebih relasi.
46
CONTOH OPERASI AGGREGAT
• Berapa banyak properti yang disewakan lebih dari £
350 per bulan?
R(myCount) COUNT(propertyNo) AS myCount (σrent > 350
(PropertyForRent))
ρ = rho (Rename Operation )
47
OPERASI GROUPING
• AL(R)
GA
– Mengelompokkan tupel R dengan cara
mengelompokkan atribut / Grouping Attribute,
(GA), dan kemudian menerapkan daftar fungsi
agregat, AL, untuk menentukan relasi baru.
– AL berisi satu atau lebih pasangan
(<aggregate_function>, <attribute>).
– Relasi yang dihasilkan berisi atribut
pengelompokan / Group Attribute (GA),
bersama dengan hasil dari masing-masing
fungsi aggregat.
48
CONTOH OPERASI GROUPING
• Temukan jumlah staf yang bekerja di setiap cabang
dan total gaji mereka.
R(branchNo,myCount,mySum) branchNo COUNT(staffNo) AS myCount,
SUM(salary) AS mySum (Staff)
49
STUDI KASUS RELATIONAL SCHEMAS FOR EMPLOYEE WORKS
Tabel : Employees
PersonId Personname Street City
P1 Alice Main Street Glasgow
P2 Jones El Camino Ave Hampshire
P3 Bob Commomwealth Ave Arcadia
P4 Camelia Mountain Street 9 Newtown
P5 Agnes Main Steet Glasgow
Tabel : WorkDetails
WorkId JobId PersonID Year
W1 J1 P1 2015
W2 J2 P2 2015
Tabel : Jobs
W3 J3 P3 2015 JobId JobName Salary
J1 Programmer 23000
W4 J2 P4 2016
J2 DBA 32000
W5 J1 P5 2016
J3 System Analyst 45000
W6 J1 P1 2016
50
STUDI KASUS : SKEMA RELASIONAL PADA EMPLOYEE WORKS
• Employees (personId, personname, street, city).
• Jobs (jobId, Jobname, salary).
• WorkDetails (workId, jobId, personId, year)
Instruksi soal studi kasus :
1. Tampilkan data employees bernama ‘Alice’.
2. Tampilkan semua data employees yang tinggal di
city ‘Glasgow’ dan ‘Arcadia’.
3. Tampilkan data yang terdiri dari personid,
personname, jobid, jobname dan salary dari tabel
employees, jobs dan workdetails.
51
STUDI KASUS : SKEMA RELASIONAL PADA EMPLOYEE WORKS
4. Tampilkan data yang terdiri dari personid,
personname, jobid, jobname dan salary dari tabel
employees, jobs dan workdetails hanya untuk
year=‘2015’.
5. Tampilkan data yang terdiri dari jobid, jobname,
salary dan year dari tabel employees, jobs dan
workdetails hanya untuk personname bernama
‘Alice’.
6. Tampilkan jobname, jumlah employees, total
salary dari tabel workdetail dan jobs.
7. Tampilkan year, jumlah employees, total salary
dari tabel workdetail dan jobs.
52
STUDI KASUS : SKEMA RELASIONAL PADA EMPLOYEE WORKS
Jawaban Soal Studi Kasus :
1. Operasi Selection untuk menampilkan data
employees yang bernama ‘Alice’:
personname = ‘Alice’ (employees)
2. Operasi Selection untuk menampilkan data
employees dengan city=‘‘Glasgow’ dan ‘Arcadia’.
city= ‘Glasgor’ ^ city= ‘Arcadia’ (employees)
53
STUDI KASUS : SKEMA RELASIONAL PADA EMPLOYEE WORKS
Jawaban Soal Studi Kasus :
3. Operasi Projection dan operasi Join untuk
menampilkan data yang terdiri dari personid,
personname, jobid, jobname dan salary dari tabel
employees, jobs dan workdetails.
personid, personname(Employees)
employees.personid = workdetails.personid ( jobid (Workdetails) )
workdetails.jobid = jobs.jobid ( jobname, salary (Jobs) )
Kondisi join/relasi
54
STUDI KASUS : SKEMA RELASIONAL PADA EMPLOYEE WORKS
Jawaban Soal Studi Kasus :
4. Operasi Projection, operasi Join dan operasi
Selection untuk menampilkan data yang terdiri
dari personid, personname, jobid, jobname dan
salary dari tabel employees, jobs dan workdetails
hanya untuk year=‘2015’.
personid, personname(Employees)
employees.personid = workdetails.personid ( jobid (year=‘2015’
Workdetails) )
workdetails.jobid = jobs.jobid ( jobname, salary (Jobs) )
Kondisi join/relasi
55
STUDI KASUS : SKEMA RELASIONAL PADA EMPLOYEE WORKS
Jawaban Soal Studi Kasus :
5. Operasi projection, operasi join dan operasi
selection untuk menampilkan data yang terdiri dari
jobid, jobname, salary dan year dari tabel
employees, jobs dan workdetails hanya untuk
employee bernama ‘Alice’.
personid, personname(personname=‘Alice’ (Employees)
employees.personid = workdetails.personid ( jobid, year (Workdetails) )
workdetails.jobid = jobs.jobid ( jobname, salary (Jobs) )
Kondisi join/relasi
56
STUDI KASUS : SKEMA RELASIONAL PADA EMPLOYEE WORKS
Jawaban Soal Studi Kasus :
6. Operasi join dan operasi agregate function untuk
menampilkan jobname, jumlah employees, total
salary dari tabel workdetail dan jobs.
R(jobname,jmlemployees,totalsalary) jobname
COUNT(personid) AS jmlemployees (Workdetails)
workdetail.jobid = jobs.jobid ( SUM(salary) AS totalsalary (Jobs) )
Kondisi join/relasi
57
STUDI KASUS : SKEMA RELASIONAL PADA EMPLOYEE WORKS
Jawaban Soal Studi Kasus :
7. Operasi join dan operasi Aggregate Function untuk
menampilkan year, jumlah employees, total salary
dari tabel workdetail dan jobs.
R(year,jmlemployees,totalsalary) year
COUNT(personid) AS jmlemployees (Workdetails)
workdetail.jobid = jobs.jobid ( SUM(salary) AS totalsalary (Jobs) )
Kondisi join/relasi
58