Anda di halaman 1dari 35

Dosen

Wijayanti Nurul Khotimah, S.Kom,


M.Sc.Eng
ALJABAR RELASIONAL &
COMPLEKS QUERY (UNION,
INTERSECT, EXCEPT)
Tujuan Perkuliahan
Mahasiswa mampu memahami dan
menggunakan aljabar relasional.
Mahasiswa mampu menggunakan dan
mengaplikasikan complex query
(union,intersect,except)
2
Hubungan Antara Aljabar Relaional
dengan SQL
Ilustrasi
Permasalahan:
Sudah ada simbol berapa
gambar mengapa perlu
diberi tulisan dibawahnya?
3
Hubungan Antara Aljabar Relaional dengan
SQL (2)
Aljabar
Relasional
SQL
- Aljabar relasional merupakan bahasa
formal dari query.
- Aljabar relasional merupakan bahasa
query yang diterjemah dalam bentuk
simbol-simbol matematis
- Sangat bermanfaat untuk melakukan
rencana evaluasi query bersifat
prosedural
- Aljabar relasional merupakan dasar dari
SQL
- SQL merupakan bahasa komersial dari
query.
- Bersifat user friendly bagi programmer
(bersifat rasional)
4
Operasi-Operasi Aljabar Relasional
Operasi-Operasi Dasar:
-Select
-Project
-Cartesian Product
-Union
-Set Defference
Operasi-Operasi Tambahan:
-Theta
Join
-Natural
Join
-Intersecti
on
-Devision
5
SELECT
Fungsi :untuk menyeleksi tuple yang
memenuhi predikat tertentu dari suatu relasi.
Simbol :
Operasi ini melibatkan:
1.Operand : konstanta/bilangan
2.Operator aritmatika :
3.Operator logika :
o
(sigma)
= s > > = < , , , , ,
) ( ), ( ), ( not or and v .
6
SELECT (2)
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0

S2
Contoh:
S2 adalah table Sailor
Kita ingin
menampilkan sailor
yang expert dengan
kriteria rating>8
) ( 2
8
S
rating >
o
sid sname rating age
28 yuppy 9 35.0
58 rusty 10 35.0

Operasi
Hasil
7
PROJECT
Tujuan :untuk memperoleh atribut tertentu dari
suatu relasi.
Simbol : (pi)
H
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0

S2
Contoh:
sname rating
yuppy 9
lubber 8
guppy 5
rusty 10

) (
,
2 S
rating sname
t
age
35.0
55.5

) ( 2 S
age
t
quer
y
8
CARTESIAN PRODUCT
Tujuan: membentuk suatu relasi dari dua relasi yang
terdiri dari kombinasi tuple-tuple yang mungkin
Simbol: x (cross)
9
CARTESIAN PRODUCT (2)
Contoh:
sid bid day
22 101 10/10/96
58 103 11/12/96


R1 sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0


S1
(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


Query: R1 x S1
Hasil: R1 dan S1 mempunyai field yang sama yaitu sid
10
UNION
Tujuan: mendapatkan gabungan nilai atribut dari
sebuah tabel relasi dengan nilai atribut dari tabel
relasi lainnya.
Syarat: Jumlah field sama dan field yang
bersesuaian harus berasal dari domain yang sama.
Simbol:
(union)
11
UNION (2)
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0

S2
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0


S1
Contoh:
Query:
2 1 S S
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0
44 guppy 5 35.0
28 yuppy 9 35.0

Hasil:
12
SET DIFFERENCE
Fungsi: untuk mendapatkan nilai yang ada dalam
sebuah tabel relasi, tapi tidak ada dalam tabel relasi
lainnya.
Simbol: - (minus)
13
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0

S2
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0


S1
Contoh:
Query:
Hasil:
SET DIFFERENCE (2)
sid sname rating age
22 dustin 7 45.0

2 1 S S
14
THETA JOIN (CONDITION JOIN)
Fungsi: jika kita ingin mengkombinasikan tupel dari
2 tabel relasi dimana kondisi dari kombinasi
tersebut tidak hanya kesamaan nilai dari 2 atribut
bernama sama, tetapi kondisi yang diinginkan juga
bisa menggunakan operator relasional (, <, =, >,
).
15
THETA JOIN (2)
(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

1 1
1 1
R S
sid R sid S . . <

sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0


S1 sid bid day
22 101 10/10/96
58 103 11/12/96


R1
Schema hasil sama dengan utk operasi cross-
product
Jumlah tuples lebih sedikit dari pada cross-product,
sehingga lebih efisien
Contoh:
Query:
Hasil:
16
EQUI JOIN
Kasus spesial dari condition join dimana kondisi
hanya terdiri dari equalities.
Schema hasil sama dengan utk cross-product,
tetapi hanya satu copy dari fields yang dinyatakan
dalam equality
sid sname rating age bid day
22 dustin 7 45.0 101 10/10/96
58 rusty 10 35.0 103 11/12/96

1 1 R S
sid

sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0


S1 sid bid day
22 101 10/10/96
58 103 11/12/96


R1
Contoh:
Query:
Hasil:
17
INTERSECTION
Fungsi: untuk mendapatkan nilai yang ada dalam
sebuah tabel relasi dan juga ada dalam tabel relasi
lainnya
Simbol: (intersection)
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0

S2
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0


S1
sid sname rating age
31 lubber 8 55.5
58 rusty 10 35.0

2 1 S S
Contoh:
Query:
Hasil:
18
DEVISION
Fungsi: untuk query yang memasukkan frase untuk
semua/seluruh.
sno pno
s1 p1
s1 p2
s1 p3
s1 p4
s2 p1
s2 p2
s3 p2
s4 p2
s4 p4

pno
p2

pno
p2
p4

pno
p1
p2
p4

sno
s1
s2
s3
s4

sno
s1
s4

sno
s1

A
B1
B2
B3
A/B1
A/B2
A/B3
19
HUBUNGAN ANTARA SQL DAN ALJABAR
RELASIONAL
Proses eksekusi query:
1. User mengekspresikan suatu query ke dalam
bahasa SQL.
2. DBMS mentranslate SQL tersebut ke dalam
aljabar relasional.
3. Optimizer DBMS tersebut mencari ekspresi
aljabar relasional lain yang menghasilkan data
yang sama tetapi compleksitasnya sedikit.
20
CONTOH AJABAR RELASIONAL UNTUK
MELAKUKAN RENCANA EVALUASI
QUERY
sid sname rating age
22 Dustin 7 45
29 Brutus 1 33
31 Lubber 8 55.5
32 Andy 8 25.5
58 Rusty 10 35
64 Horatio 7 35
71 Zorba 10 16
74 Horatio 9 35
85 Art 3 25.5
95 Bob 3 63.5
sid bid day
22 101 10/10/98
22 102 10/10/98
22 103 10/8/98
22 104 10/7/98
31 102 11/10/98
31 103 11/6/98
31 104 11/12/98
64 101 9/5/98
64 102 9/8/98
74 103 9/8/98
sailor Reserver
21
STUDI KASUS
Persoalan: Tampilkan nama sailor yang telah
mereservasi boat 103
) ) ( ( Sailors Reserves
bid
sname

103 =
o t
)) ( ( Sailors Reserves
bid
sname

103 =
o t
Solusi 1:
Solusi 2:
Yang mana yang lebih efisien?
22
STUDI KASUS (2)
sid bid day
22 103 10/8/98
31 103 11/6/98
74 103 9/8/98
Instance dari temp 1
sid sname rating age bid day
22 Dustin 7 45 103 10/8/98
31 Lubber 8 55.5 103 11/6/98
74 Horatio 9 35 103 9/8/98
Instance dari temp 2
Solusi 1 lebih efisien karena ukuran dari relasi
intermedietnya lebih sedikit (hal ini karena adanya proses
seleksi terlebih dulu)
Kesimpulan:
23
LATIHAN (KERJAKAN SELAMA 30
MENIT)
1. Dapatkan nama boat yang telah
disewa oleh Dustin.
2. Dapatkan nama sailor yang telah
menyewa boat bernama Clipper
3. Dapatkan nama sailor yang telah
menyewa Boat berwarna biru
atau hijau.
4. Dapatkan nama sailor yang telah
mereservasi boat berwarna
merah dan hijau.
5. Dapatkan nama sailor dengan
umur lebih dari 20 tetapi belum
mereserve boat berwarna merah.
bid bname color
101 Interlak
e
Blue
102 Interlak
e
Red
103 Clipper Green
104 Marine red
Tabel B1 untuk Boats
24
COMPLEX QUERY
25
Overview SQL
Data Manipulation Language (DML): Subset SQL
yang dapat diguna-kan utk menspesifikasikan queries
dan utk menyisipkan (insert), menghapus (delete),
dan memodifikasi (modify) baris-baris tabel
Data Definition Language (DDL): Subset SQL utk
mendukung pembuatan, penghapusan, dan
modifikasi tables & views.
Integrity Constraints (ICs) dapat didefinisikan pada
tables pada saat suatu tabel dibuat atau nanti
sesudahnya
Embedded & Dynamic SQL: Fitur-fitur embedded
SQL memungkinkan SQL utk dipanggil dari suatu
bahasa induk seperti C atau Java. Sedang fitur-fitur
dynamic SQL memungkinkan sebuah query utk
disusun (dijalankan) pada saat run-time
(Ramakrishnan, Chap 6).

26
Client-Server Execution & Remote Database
Access: Perintah-perintah SQL untuk ini dapat
digunakan mengendalikan bagaimana suatu
program aplikasi client dapat dihubungkan ke
sebuah SQLdatabase server, atau mengakses
data dari sebuah database melalui jaringan
(Ramakrishnan, Chap 7)
Transaction Management: Berbagai perintah SQL
memungkinkan seorang pengguna utk secara
eksplisit mengendalikan aspek bgm sebuah
transaksi harus dijalankan (Ramakrishnan, Chap
21)
Security: SQL menyediakan mekanisme utk
mengendalikan akses pengguna ke obyek
database seperti tables & views (Ramakrishnan,
Chap 21)

Overview SQL (Lanjutan)
27
Contoh
Instances
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0


sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0

sid bid day
22 101 10/10/96
58 103 11/12/96


Reserves (R1)
Sailor (S1)
Sailor(S2)
bid bname color
101 Interlake blue
103 Clipper green


Boat(B1)
Basic SQL Query
relation-list Satu list nama-nama relasi (mungkin diikuti
dengan sebuah range-variable setelah setiap nama relasi).
target-list Satu list attribut dari relasi dlm relation-list
qualification Perbandingan (Attr op const, or Attr1 op Attr2,
dimana op adalah salah satu dari (<, s, >, >, =, =) yang
dikombinasikan menggunakan konjungsi logika AND, OR,
atau NOT.
DISTINCT merupakan sebuah keyword optimal yang
mengindikasikan bahwa jawaban query tidak boleh berisi
duplikasi baris. Default-nya adalah duplikasi TIDAK
dieliminasi!
SELECT [DISTINCT] target-list
FROM relation-list
WHERE qualification
29
Strategi Evaluasi Konseptual
Semantik dari sebuah query SQL didefinisikan
berdasarkan strategi evaluasi konseptual berikut:
Hitung hasil cross-product dari relation-list.
Buang tuples hasil jika tuples tsb tidak memenuhi qualifications.
Hapus attributes yang tidak ada dalam target-list.
Jika digunakan DISTINCT, lakukan eliminasi baris-baris yang
duplikasi.
Strategi di atas mungkin merupakan cara yang paling
tidak efisien utk menghitung sebuah query! Untuk ini,
sebuah optimizer akan mencari strategi yang lebih
efisien utk menghitung jawaban yang sama.
30
Contoh Hasil Evaluasi Konseptual
SELECT S.sname
FROM Sailors S, Reserves R
WHERE S.sid=R.sid AND R.bid=103
(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


Range variables
Catatan utk Range Variables
Sebenarnya hanya diperlukan jika ralasi yang
sama muncul dua kali dalam FROM clause. Untuk
ini query sebelumnya dapat juga ditulis menjadi:
SELECT S.sname
FROM Sailors S, Reserves R
WHERE S.sid=R.sid AND bid=103
SELECT sname
FROM Sailors, Reserves
WHERE Sailors.sid=Reserves.sid
AND bid=103
Namun demikian,
merupakan good style
untuk selalu
menggunakan
range variables!
ATAU
32
Dapatkan sid dari sailors yang telah melakukan
reservasi sebuah red boat atau sebuah green boat
UNION: dpt digunakan utk
menghitung union dari
sembarang dua union-
compatible sets of tuples yang
merupakan hasil dari dua SQL
queries.
Jika OR diganti dg AND dlm
query pertama, apa yang akan
diperoleh?
Juga tersedia: EXCEPT untuk
menghitung set difference dari
sembarang dua union-
compatible sets of tuples
(Apa yang akan diperoleh jika
UNION diganti dengan
EXCEPT?)
SELECT S.sid
FROM Sailors S, Boats B, Reserves R
WHERE S.sid=R.sid AND R.bid=B.bid
AND (B.color=red OR B.color=green)
SELECT S.sid
FROM Sailors S, Boats B, Reserves R
WHERE S.sid=R.sid AND R.bid=B.bid
AND B.color=red
UNION
SELECT S.sid
FROM Sailors S, Boats B, Reserves R
WHERE S.sid=R.sid AND R.bid=B.bid
AND B.color=green
UNION, INTERSECT & EXCEPT
Dapatkan sid dari sailors yang telah melakukan
reservasi sebuah red boat dan sebuah green boat
INTERSECT: dpt
digunakan utk menghitung
interseksi dari sembarang
dua union-compatible sets
of tuples.
Dimasukkan dlm standar
SQL/92, tetapi beberapa
sistem tidak
mendukungnya.
Bedakan secara jelas
query UNION &
INTERSECT ! Seberapa
jauh kedua berbeda ?
(tanpa secara eksplisit
menggunakan keyword
UNION & INTERSECT)
SELECT S.sid
FROM Sailors S, Boats B1, Reserves R1,
Boats B2, Reserves R2
WHERE S.sid=R1.sid AND R1.bid=B1.bid
AND S.sid=R2.sid AND R2.bid=B2.bid
AND (B1.color=red AND B2.color=green)
SELECT S.sid
FROM Sailors S, Boats B, Reserves R
WHERE S.sid=R.sid AND R.bid=B.bid
AND B.color=red
INTERSECT
SELECT S.sid
FROM Sailors S, Boats B, Reserves R
WHERE S.sid=R.sid AND R.bid=B.bid
AND B.color=green
Referensi
http://penjual-
mimpi.blogspot.com/2011/01/aljabar-relasional-
model-data.html (diakses tanggal 8 September
2011)
Database System Concepts Silberschatz-Korth-
Sudarshan, McGraw Hill, Fourth Edition, 2002
Database Management Systems, Ramakrishnan,
Gehrke. McGRAW HILL. Third Edition
35