Anda di halaman 1dari 49

SISTEM BASIS DATA

C31050209

RELATIONAL ALGEBRA
Week 7
WIDYA SULIYANTI
widya@itpln.ac.id
TOPIK BAHASAN

• Bentuk queries dalam relational algebra


• Bentuk queries dalam relational calculus
PENGANTAR

• Relational Algebra dan Calculus adalah bahasa


formal terkait dengan relational model
• Secara informal, relational algebra adalah (high
level) procedural language dan relational calculus
adalah sebuah non-procedural language
RELATIONAL ALGEBRA

• Relational Algebra beroperasi pada satu atau lebih


relasi untuk menentukan relasi lain tanpa mengubah
relasi semula
• Operand dan hasilnya adalah relasi. Output dari satu
operasi dapat menjadi input dari operasi berikutnya.
RELATIONAL ALGEBRA

• Lima operasi dasar dalam relational algebra:


Selection, Projection, Cartesian product, Union dan Set
Difference
• Operasi lanjutan Join, Intersection dan Division
OPERASI RELATIONAL ALGEBRA
OPERASI RELATIONAL ALGEBRA
TABEL
TABEL
TABEL
SELECTION

• PREDICATE (R)
- Bekerja pada relasi tunggal (R) dan menentukan
relasi yang berisi tuple (baris) yang memenuhi
syarat (predicate)
SELECTION

Misalnya: Tampilkan semua staff dengan gaji lebih


besar dari £10,000.
SALARY > 10000 (STAFF)
PROJECTION
• COL1, . . . , COLN(R)
- Bekerja pada relasi tunggal (R) dan menentukan
relasi yang berisi bagian vertikal dari R, mengambil
nilai atribut dan menghapus duplikasi
PROJECTION
Misalnya: Tampilkan staffNo, fName, lName dan
detil gaji untuk semua staff
STAFFNO, FNAME, LNAME, SALARY(STAFF)
UNION
•R  S
- Union dari dua relasi, R dan S menentukan relasi
yang berisi semua baris dari R atau S atau
keduanya. Duplikasi baris dihapuskan
- R dan S sesuai untuk digabungkan
UNION
Contoh:
Tampilkan semua kota dimana ada kantor cabang atau
properti yang disewakan
CITY(BRANCH)  CITY(PROPERTYFORRENT)
SET DIFFERENCE
•R - S
- Menentukan relasi yang terdiri dari baris yang ada
di relasi R, tapi tidak ada di S.
- R dan S harus sesuai untuk digabungkan
SET DIFFERENCE
Contoh:
Tampilkan semua kota dimana ada kantor cabang tapi
tidak ada properti yang disewakan.
CITY(BRANCH) – CITY(PROPERTYFORRENT)
INTERSECTION
•R  S
- Menentukan suatu relasi yang terdiri dari satu set
baris yang ada di R dan S
- R dan S harus sesuai untuk digabungkan
• Dinyatakan menggunakan operasi dasar
R  S = R – (R – S)
INTERSECTION
Contoh:
Tampilkan semua kota dimana terdapat kantor cabang
dan ada paling sedikit satu properti yang disewakan
CITY(BRANCH)  CITY(PROPERTYFORRENT)
CARTESIAN PRODUCT
•R X S
- Menentukan sebuah relasi yang merupakan
kombinasi setiap baris pada relasi R dengan setiap
baris pada Relasi S
CARTESIAN PRODUCT
Contoh :
Tampilkan nama dan komentar klien yang telah
melihat (view) properti yang disewakan
(CLIENTNO, FNAME, LNAME(CLIENT)) X (CLIENTNO, PROPERTYNO, COMMENT (VIEWING))
CARTESIAN PRODUCT
CONTOH CARTESIAN PRODUCT DAN SELECTION
• Gunakan operasi Selection untuk mengambil baris-
baris dimana Client.clientNo = Viewing.clientNo
SCLIENT.CLIENTNO = VIEWING.CLIENTNO((CLIENTNO, FNAME, LNAME(CLIENT)) 
(CLIENTNO, PROPERTYNO, COMMENT(VIEWING)))
CONTOH CARTESIAN PRODUCT DAN SELECTION
Cartesian Product dan Selection dapat dikurangi
menjadi operasi tunggal yang dinamakan Join
OPERASI JOIN
• Join adalah turunan dari Cartesian Product
• Sama dengan melakukan Selection, menggunakan
join predicate sebagai formula seleksi, dari
Cartesian product dengan dua operand
CONTOH-EQUIJOIN
• Tampilkan nama dan komentar dari semua klien
yang telah melihat properti untuk disewakan
(CLIENTNO, FNAME, LNAME(CLIENT)) CLIENT.CLIENTNO = VIEWING.CLIENTNO

(CLIENTNO, PROPERTYNO, COMMENT(VIEWING))


NATURAL JOIN
•R S
- Suatu equijoin dari dua relasi R dan S terhadap
atribut yang sama x.
NATURAL JOIN
Contoh:
Tampilkan nama dan komentar dari semua klien yang
telah melihat properti yang disewakan
(CLIENTNO, FNAME, LNAME(CLIENT)) (CLIENTNO, PROPERTYNO,
COMMENT(VIEWING))
LEFT OUTER JOIN
•R S
(Left) outer join adalah join dimana baris dari R
yang tidak mempunyai nilai yang sama pada kolom
bersama dari S juga diikutsertakan dalam hasil
relasi.
LEFT OUTER JOIN
Contoh:
Buat status laporan untuk properti yang sudah dilihat
(PROPERTYNO, STREET, CITY(PROPERTYFORRENT) ) VIEWING
SEMIJOIN
•R F S.

- Menentukan suatu relasi yang berisi baris dari R


yang berpartisipasi dalam join R dengan S
• Dapat menuliskan Semijoin menggunakan
Projection dan Join
R FS = A(R F S)
SEMIJOIN
• Tampilkan detil semua staff yang bekerja di kantor
cabang di Glasgow
Staff
Staff.branchNo = Branch.branchNo (city=‘Glasgow’ (Branch))
DIVISION
•R  S
Menentukan suatu relasi dari atribut C yang terdiri
dari set baris dari R yang sesuai dengan kombinasi
dari setiap baris S
DIVISION
Contoh: Tentukan semua klien yang telah melihat
properti dengan tiga kamar
(CLIENTNO, PROPERTYNO(VIEWING))  (PROPERTYNO(ROOMS = 3 (PROPERTYFORRENT)))
OPERASI AGREGAT
• AL(R)
- Terapkan fungsi agregat, AL, ke R untuk
menentukan suatu relasi dari daftar agregat
- AL berisi satu atau lebih pasangan
(fungsi agregat, atribut)
• Fungsi agregat: COUNT, SUM, AVG, MIN, MAX
OPERASI AGREGAT
Contohnya: Berapa banyak properti dengan harga
sewa £350 per bulan ?
R(MYCOUNT) COUNT PROPERTYNO (ΣRENT > 350 (PROPERTYFORRENT))
OPERASI GROUP
• GA AL(R)
- Kelompok baris dari R melalui atribut grup, GA
kemudian menerapkan fungsi agregat, AL, untuk
menentukan suatu relasi
- AL berisi satu atau lebih pasangan (fungsi agregat,
atribut)
- Hasil relasi terdiri atribut grup, GA, bersama
dengan hasil dari setiap fungsi agregat
CONTOH – OPERASI GROUPING
Cari jumlah staff pada setiap cabang dan jumlah gaji
mereka
R(BRANCHNO, MYCOUNT, MYSUM)BRANCHNO COUNT STAFFNO, SUM SALARY(STAFF)
RELATIONAL CALCULUS
• Query Relational Calculus menentukan apa yang
akan diambil daripada bagaimana cara
mengambilnya.
• Predicate adalah fungsi nilai kebenaran dengan
argumen
• Jika predicate berisi suatu variabel (seperti x adalah
anggota staff, maka harus ada rentang/kisaran
(range) dari x
TUPLE RELATIONAL CALCULUS
• Tentukan range dari variabel tuple S sebagai relasi
Staff:
Staff (S)
Contohnya:
• Cari detil dari semua staff yang mempunyai
penghasilan lebih dari £ 10,000
{S | Staff(S) S.salary > 10000}
TUPLE RELATIONAL CALCULUS
• Cari atribut seperti gaji/salary:
{S.salary | Staff(S) S.salary > 10000}
• Ada dua quantifier yaitu:
- existential quantifier $ (terdapat)
- universal quantifier " (untuk semua)
STAFF(S) ($B)(BRANCH(B) (B.BRANCHNO = S.BRANCHNO) B.CITY = ‘LONDON’)
Terdapat baris dari Branch dengan branchNo yang
sama dengan branchNo dari baris Staff, S, yang
berlokasi di London
RELATIONAL CALCULUS
• Quantifier unik digunakan dalam pernyataan berikut
ini:
("B) (B.city  ‘PARIS’)
Artinya : Semua baris Branch, alamatnya tidak di
Paris.
• Dapat juga menggunakan
~($B) (B.city = ‘PARIS’)
Tidak ada cabang dengan alamat di Paris
RELATIONAL CALCULUS
• Tampilkan nama semua manager yang mempunyai
penghasilan lebih dari £ 25,000
{S.fName, S.lName | Staff(S)
S.position = ‘Manager’ S.salary > 25000}

• Tampilkan staf yang mengelola properti yang


disewakan di Glasgow
{S | Staff(S) ($P) (PropertyForRent(P) (P.staffNo = S.staffNo)
P.city = ‘Glasgow’)}
RELATIONAL CALCULUS
• Tampilkan nama staff yang saat ini tidak mengelola
property
{S.fName, S.lName | Staff(S) (~($P) (PropertyForRent(P)
(S.staffNo = P.staffNo)))}
atau
{S.fName, S.lName | Staff(S) (("P) (~PropertyForRent(P)
~(S.staffNo = P.staffNo)))}
SOAL-SOAL

Room terdiri dari informasi mengenai kamar di setiap hotel


dan (roomNo, hotelNo) adalah primary key.
Booking berisi informasi mengenai booking dan (hotelNo,
guestNo, dateFrom) adalah primary key.
Guest berisi informasi mengenai tamu hotel dan guestNo
adalah primary key
SOAL-SOAL
1. Jelaskan relasi yang dihasilkan oleh operasi relational
algebra berikut ini:

2. Tulis relational algebra untuk query berikut ini:


SOAL-SOAL
3. Berikut ini tabel-tabel dari database perpustakaan

a. Tampilkan semua judul buku (title)


b. Tampilkan semua judul buku yang diterbitkan pada
tahun (year) 2016
c. Tampilkan semua copy dari buku-buku yang tersedia
untuk dipinjam
d. Tampilkan semua nama peminjam untuk buku yang
telat dikembalikan

Anda mungkin juga menyukai