Anda di halaman 1dari 45

Aljabar Relasional

Pertanyaan
• Apa itu Aljabar Relasional ?
• Apa itu operator aljabar dasar, dan bagaimana mereka
dikombinasikan untuk menulis query – query kompleks ?

Basis Data 2
Aljabar Relasional
• Bahasa Query adalah bahasa yang dikhususkan untuk
mengajukan pertanyaan atau Query, yang melibatkan
data dalam sebuah database.
• Input dan output suatu query adalah relasi.
• Query dievaluasi dengan menggunakan contoh input
relasi dan menghasilkan contoh output relasi.

Basis Data 3
Aljabar Relasional
• Merupakan salah satu dari 2 bahasa query formal yang
terkait dengan model relasional.
• Memiliki operator – operator dasar aljabar :
- Selection
- Projection
- Operasi Himpunan (Union, Intersection,
Set – Difference, Cross – Product)
- Renaming
- Join
- Division

Basis Data 4
Selection dan Projection
• Aljabar Relasional mencakup operator untuk memilih
(selection) baris dari satu relasi () dan untuk
memproyeksikan (projection) kolom ().
• Contoh :
 Unit Price >= Rp. 5.000.000,- (Products)
 Product ID, Product Name (Products)
 Product ID, Product Name ( Unit Price >= Rp. 5.000.000,- (Products))
 Country (Customers)

Basis Data 5
Contoh Selection dan Projection

Misalkan :

T1 T2 T3
A B C D A B C D A E F
a1 b1 c1 d1 a1 b1 c1 d1 a1 e1 f1
a2 b1 c2 d1 a2 b2 c1 d1 a2 e2 f2
a2 b2 c2 d1 a4 b1 c2 d3 a3 e1 f3
a3 b2 c3 d3 a4 e2 f4

Basis Data 6
Contoh Selection dan Projection
(Lanjutan)
•  C > c1 (T1)   A (T1)   A, B ( C > c1 (T1))
A B C D A A B
a2 b1 c2 d1 a1 a2 b1
a2 b2 c2 d1 a2 a2 b2
a3 b2 c3 d3 a3 a3 b2

T1 T2 T3
A B C D A B C D A E F
a1 b1 c1 d1 a1 b1 c1 d1 a1 e1 f1
a2 b1 c2 d1 a2 b2 c1 d1 a2 e2 f2
a2 b2 c2 d1 a4 b1 c2 d3 a3 e1 f3
a3 b2 c3 d3 a4 e2 f4

Basis Data 7
Soal

• Tampilkan data mahasiswa yang berjenis


kelamin laki-laki
• Tampilkan data nim, dan nama mahasiswa
• Tampilkan data nim, dan nama mahasiswa
yang berjenis kelamin laki-laki

Basis Data 8
Operasi Himpunan

• Union ()
R  S Menghasilkan suatu relasi yang berisi instan –
instan yang terjadi dalam suatu relasi R atau suatu relasi
S. R dan S haruslah Union – Compatible dan skema
hasil identik dengan skema R.
2 contoh relasi dikatakan Union – Compatible jika
memenuhi persyaratan :
- Memiliki jumlah field yang sama.
- Field yang berurutan, dalam urutan dari kiri ke kanan,
memiliki domain yang sama.

Basis Data 9
Operasi Himpunan (Lanjutan)

• Intersection ()
R  S menghasilkan suatu relasi yang berisi instan –
instan yang terjadi baik pada R dan S. Relasi R dan S
harus Union – Compatible dan skema hasil identik
dengan skema R.
• Set – Difference (-)
R – S menghasilkan suatu relasi yang berisi instan –
instan yang terjadi pada R tetapi tidak terjadi pada S.
Relasi R dan S harus Union – Compatible dan skema
hasil identik dengan skema R.

Basis Data 10
Operasi Himpunan (Lanjutan)

• Cross – Product ()


R  S menghasilkan suatu relasi yang skemanya berisi
semua field R (dalam urutan yang sama dengan field R)
diikuti dengan semua field S (dalam urutan yang sama
dengan field S).
Operasi Cross – Product disebut juga Cartesian –
Product.

Basis Data 11
Contoh Operasi Himpunan
• T1  T2  T1  T2  T1 – T2
A B C D A B C D A B C D
a1 b1 c1 d1 a1 b1 c1 d1 a2 b1 c2 d1
a2 b1 c2 d1 a2 b2 c2 d1
a2 b2 c1 d1 a3 b2 c3 d3
a2 b2 c2 d1
a3 b2 c3 d3
a4 b1 c2 d3
T1 T2
A B C D A B C D
a1 b1 c1 d1 a1 b1 c1 d1
a2 b1 c2 d1 a2 b2 c1 d1
a2 b2 c2 d1 a4 b1 c2 d3
a3 b2 c3 d3

Basis Data 12
Contoh Operasi Himpunan
(Lanjutan)
• T2  T3
(A) B C D (A) E F
a1 b1 c1 d1 a1 e1 f1 T2
a1 b1 c1 d1 a2 e2 f2 A B C D
a1 b1 c1 d1 a3 e1 f3 a1 b1 c1 d1
a1 b1 c1 d1 a4 e2 f4 a2 b2 c1 d1
a2 b2 c1 d1 a1 e1 f1 a4 b1 c2 d3
a2 b2 c1 d1 a2 e2 f2 T3
a2 b2 c1 d1 a3 e1 f3 A E F
a2 b2 c1 d1 a4 e2 f4 a1 e1 f1
a4 b1 c2 d3 a1 e1 f1 a2 e2 f2
a4 b1 c2 d3 a2 e2 f2 a3 e1 f3
a4 b1 c2 d3 a3 e1 f3 a4 e2 f4
a4 b1 c2 d3 a4 e2 f4

Basis Data 13
Renaming

• Dalam operasi himpunan Cross – Product, bisa menimbulkan


terjadinya Konflik Penamaan, karena Cross – Product bisa
menghasilkan suatu relasi dari 2 relasi dengan skema yang sama,
sehingga skema hasil akan muncul field dengan nama yang sama.
• Operator Renaming () digunakan untuk menghindari terjadinya
Konflik Penamaan tersebut.
• Ekspresi Renaming :
 ( R(( F ), ( E )))
Dimana R = Relasi, F = Daftar Renaming, E = Aljabar Relasional

Basis Data 14
Contoh Renaming

 (Temp (1  A_1, 5  A_2), T2  T3)

A_1 B C D A_2 E F
a1 b1 c1 d1 a1 e1 f1
a1 b1 c1 d1 a2 e2 f2
a1 b1 c1 d1 a3 e1 f3
………
………
………
a4 b1 c2 d3 a2 e2 f2
a4 b1 c2 d3 a3 e1 f3
a4 b1 c2 d3 a4 e2 f4

Basis Data 15
Join
Merupakan operasi yang digunakan untuk menggunakan
informasi dari dua atau lebih relasi ( ).
• Condition Join
• Equijoin
• Natural Join

Basis Data 16
Condition Join
• Condition Join identik dengan Selection Condition.
Bentuk operasinya yakni :

R c S =  c (R  S)

• Jadi, Condition Join ditentukan untuk menjadi sebuah


Cross – Product yang diikuti dengan satu selection.

Basis Data 17
Equijoin
• Satu kasus khusus yang biasa terjadi pada operasi join
R S adalah pada saat condition join hanya terdiri dari
equality dari bentuk R.name1 = S.name1, yakni equality
antara 2 field dalam R dan S. Operasi join seperti ini
disebut Equijoin.
• Skema hasil dari equijoin yang berisi field R (dengan
nama dan domain yang sama seperti di dalam R) diikuti
dengan field S yang tidak muncul di dalam condition join.
Jika himpunan field dalam relasi hasil itu memasukkan 2
field yang mewarisi nama dari R dan S, maka relasi
hasilnya tidak diberi nama.

Basis Data 18
Natural Join
Kasus selanjutnya dari operasi join R S adalah satu
equijoin dimana equality ditentukan pada semua field yang
mempunyai nama sama dalam R dan S. Dalam kasus ini,
kita dapat mengabaikan condition join, defaultnya adalah
condition join yang merupakan kumpulan equality pada
semua field biasa. Kasus seperti ini disebut Natural Join,
dan properti bagusnya adalah hasilnya dijamin tidak
memiliki 2 field dengan nama sama.

R S

Basis Data 19
Contoh Condition Join

(A) B C D (A) E F
T2 T2.A > T3.A T3
a1 b1 c1 d1 a1 e1 f1
a1 b1 c1 d1 a2 e2 f2

(A) B C D (A) E F a1 b1 c1 d1 a3 e1 f3
a1 b1 c1 d1 a4 e2 f4
a2 b2 c1 d1 a1 e1 f1
a2 b2 c1 d1 a1 e1 f1
a4 b1 c2 d3 a1 e1 f1
a2 b2 c1 d1 a2 e2 f2
a4 b1 c2 d3 a2 e2 f2
a2 b2 c1 d1 a3 e1 f3
a4 b1 c2 d3 a3 e1 f3
a2 b2 c1 d1 a4 e2 f4
a4 b1 c2 d3 a1 e1 f1
a4 b1 c2 d3 a2 e2 f2
a4 b1 c2 d3 a3 e1 f3
a4 b1 c2 d3 a4 e2 f4

Basis Data 20
Contoh Equijoin & Natural Join
T2 T3
T2 T2.A = T3.A T3
(A) B C D (A) E F
A B C D E F a1 b1 c1 d1 a1 e1 f1
a1 b1 c1 d1 e1 f1 a1 b1 c1 d1 a2 e2 f2
a2 b2 c1 d1 e2 f2 a1 b1 c1 d1 a3 e1 f3
a4 b1 c2 d3 e2 f4 a1 b1 c1 d1 a4 e2 f4
a2 b2 c1 d1 a1 e1 f1
a2 b2 c1 d1 a2 e2 f2
a2 b2 c1 d1 a3 e1 f3
a2 b2 c1 d1 a4 e2 f4
a4 b1 c2 d3 a1 e1 f1
a4 b1 c2 d3 a2 e2 f2
a4 b1 c2 d3 a3 e1 f3
a4 b1 c2 d3 a4 e2 f4

Basis Data 21
Division
Misalkan untuk setiap nilai x di dalam R, perhatikan
kumpulan nilai y yang muncul dalam instan R dengan nilai x
tersebut. Jika kumpulan ini berisi semua nilai y dalam S,
maka nilai x adalah hasil dari R / S.

Basis Data 22
Contoh Division

•  A, B (T1)   B (T1)   B ( B = b1 (T1))


A B B B
a1 b1 b1 b1
a2 b1 b2
a2 b2
a3 b2

  A, B (T1) /  B (T1)   A, B (T1) /  B ( B = b1 (T1))

A A
a2 a1
a2

Basis Data 23
Fungsi Aggregate ( )

• SUM : menjumlah nilai dari suatu atribut


• AVERAGE : mencari rata-rata nilai dari suatu
atribut
• MAXIMUM : mencari nilai paling besar dari
suatu atrbiut
• MINIMUM : mencari nilai paling besar dari
suatu atribut
• COUNT : menghitung jumlah record
Penggunaan Fungsi Aggregate

• Dapatkan setiap nomer department, jumlah


pegawai dalam department dan gaji rata-rata
mereka.

R(DNO,jumlah_peg, gaji_rata2) <=


DNO, COUNT SSN, AVERAGE SALARY (EMPLOYEE)
Soal Query Aljabar
Misalkan :

Customers ( CustomerID, ContactName, Gender, Address,


City, Region, Country, ZIP, Phone )
Products ( ProductID, ProductName, UnitPrice, UnitInStock,
UnitOnOrder )
Orders ( OrderID, CustomerID, OrderDate )
Order Detail ( OrderID, ProductID, UnitPrice, Quantity,
Discount )

Basis Data 26
Soal Query Aljabar (lanjutan)
1. Cari nama pelanggan yang pernah memesan barang
pada tanggal “xx / xx / xxxx”.
2. Cari nama pelanggan yang pernah memesan barang
dengan kode barang = “xxx”.
3. Cari negara yang pernah memesan barang yang
berdiskon dan jumlah barang yang dipesan diatas 10
unit.
4. Cari nama barang dan sisa stok yang ada untuk barang
yang tidak memiliki diskon atau harga barang / unitnya
dibawah Rp. 50.000,-.
5. Cari nama pelanggan yang sudah pernah memesan
barang paling sedikit 2x.

Basis Data 27
Jawab Query Aljabar
1. Cari nama pelanggan yang pernah memesan barang pada
tanggal “xx / xx / xxxx”.
 ContactName (( OrderDate = ‘xx/xx/xxxx’ Orders) Customers)
Atau
 (Temp1,  OrderDate = ‘xx / xx / xxxx’ Orders)
 (Temp2, Temp1 Customers)
 ContactName (Temp2)

Basis Data 28
Jawab Query Aljabar (Lanjutan)
2. Cari nama pelanggan yang pernah memesan barang dengan
kode barang = “xxx”.
 ContactName (( ProductID = ‘xxx’ (Order Detail)) Orders
Customers)
Atau
 (Temp1,  ProductID = ‘xxx’ (Order Detail))
 (Temp2, Temp1 Orders)
 (Temp3, Temp2 Customers)
 ContactName (Temp3)

Basis Data 29
Jawab Query Aljabar (Lanjutan)
3. Cari negara yang pernah memesan barang yang berdiskon
dan jumlah barang yang dipesan diatas 10 unit.
 Country (( Discount>0  Quantity>10 (Order Detail)) Orders
Customers)
Atau
 Country (( Discount > 0 (Order Detail)   Quantity > 10 (Order
Detail)) Orders Customers)
Atau

Basis Data 30
Jawab Query Aljabar (Lanjutan)
 (Temp1,  Discount > 0 (Order Detail))
 (Temp2,  Quantity > 10 (Order Detail))
 (Temp3, Temp1  Temp2)
 (Temp4, Temp3 Orders)
 (Temp5, Temp4 Customers)
 Country (Temp5)

Basis Data 31
Jawab Query Aljabar (Lanjutan)
4. Cari nama barang dan sisa stok yang ada untuk barang
yang tidak memiliki diskon atau harga barang / unitnya
dibawah Rp. 50.000,-.
 ProductName, UnitInStock (( Discount = 0  UnitPrice < Rp. 50.000,-
(Order Detail)) Products)
Atau
 ProductName, UnitInStock (( Discount = 0 (Order Detail) 
 UnitPrice < Rp. 50.000,- (Order Detail)) Products)
Atau

Basis Data 32
Jawab Query Aljabar (Lanjutan)
 (Temp1,  Discount = 0 (Order Detail))
 (Temp2,  UnitPrice < Rp. 50.000,- (Order Detail))
 (Temp3, Temp1  Temp2)
 (Temp4, Temp3 Products)
 (Hasil,  ProductName, UnitInStock (Temp4))

Basis Data 33
Jawab Query Aljabar (Lanjutan)
5. Cari nama pelanggan yang sudah pernah memesan barang
paling sedikit 2x.
 (Pesanan,  CustomerID, ContactName, OrderID (Customers
Orders))
 (Pesanan2 (1  CID1, 2  Name1, 3  OID1, 4 
CID2, 5  Name2, 6  OID2), Pesanan  Pesanan)
 Name1 ( (CID1 = CID2)  (OID1 <> OID2) Pesanan2)

Basis Data 34
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.

Basis Data 35
Tuple Relational Calculus
• Variabel Tuple merupakan variabel yang nilainya diambil
dari tuple skema relasi tertentu, sehingga nilai yang
ditentukan untuk satu variabel tuple tertentu, punya
jumlah dan tipe field yang sama.
• 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 dengan T = t.
• Penulisan formula p(T) adalah inti dari TRC dan pada
dasarnya merupakan satu subset sederhana dari First –
Order Logic.

Basis Data 36
Syntax TRC Query
• Rel adalah nama relasi.
• R dan S adalah variabel tuple.
• a adalah atribut dari R.
• b adalah atribut dari S.
• op adalah operator pada himpunan { <, >, =, , ,  }
• Atomic formula adalah salah satu dari formula berikut :
- R  Rel
- R.a op S.b
- R.a op constant, atau constant op R.a

Basis Data 37
Syntax TRC Query (Lanjutan)
Formula didefinisikan secara rekursif untuk menjadi salah
satu dari daftar berikut ini, dimana p dan q adalah formula
dan p(R) menggambarkan formula dimana variabel R
muncul :
• Semua atomic formula
• p, p  q, p  q, atau p  q
•  R ( p ( R ) ), dimana R adalah variabel tuple
•  R ( p ( R ) ), dimana R adalah variebel tuple

Basis Data 38
Semantik TRC Query
Setiap variabel bebas pada sebuah formula F terikat pada
nilai tuple. Untuk penetapan tuple tertentu ke variabel,
dengan memperhatikan contoh database, F dievaluasi ke
true jika salah satu hal berikut terpenuhi :
• F adalah formula atomic R  Rel, dan R adalah tuple di
dalam instance relation Rel.
• F adalah komparasi R.a op S.b, R.a op constant, atau
constant op R.a, dan tuple yang ditentukan untuk R
dan S mempunyai nilai – nilai field R.a dan S.b yang
menghasilkan komparasi true.
• F adalah form p dan p bukan true, atau form p  q, dan
baik p dan q adalah true, atau p  q dan salah satunya
adalah true, atau form p  q dan q adalah true kapan
saja p adalah true.

Basis Data 39
Semantik TRC Query (Lanjutan)
• F adalah form  R(p(R)), dan ada beberapa tuple untuk
variabel bebas pada p(R), termasuk variabel R yang
membuat formula p(R) menjadi true.
• F adalah form  R(p(R)), dan ada beberapa tuple untuk
variabel bebas pada p(R) yang membuat formula p(R)
true tidak peduli tuple apa yang ditentukan untuk R.

Basis Data 40
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) }

Basis Data 41
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’) }
Basis Data 42
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) }

Basis Data 43
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,-)) }

Basis Data 44
Tanya - Jawab

Basis Data 45

Anda mungkin juga menyukai