sesi_5_aljabar_dan_kalkulus_relasional

42
Sesi V Sesi V Aljabar & Kalkulus Aljabar & Kalkulus Relasional Relasional Oleh : Oleh : Ng Poi Wong, S.Kom, MTI Ng Poi Wong, S.Kom, MTI

Upload: abdul-rokhman

Post on 02-Jul-2015

983 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sesi VSesi VAljabar & Kalkulus RelasionalAljabar & Kalkulus Relasional

Oleh :Oleh :

Ng Poi Wong, S.Kom, MTINg Poi Wong, S.Kom, MTI

Page 2: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 2

PertanyaanPertanyaan

Apa itu Aljabar Relasional ?Apa itu Aljabar Relasional ?

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

Apa itu Kalkulus Relasional ?Apa itu Kalkulus Relasional ?

Subset logika matematika apa yang digunakan di dalam kalkulus Subset logika matematika apa yang digunakan di dalam kalkulus relasional, dan bagaimana digunakan untuk menuliskan query ?relasional, dan bagaimana digunakan untuk menuliskan query ?

Page 3: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 3

Aljabar & Kalkulus RelasionalAljabar & Kalkulus Relasional

Bahasa QueryBahasa Query adalah bahasa yang dikhususkan untuk adalah bahasa yang dikhususkan untuk mengajukan pertanyaan atau mengajukan pertanyaan atau QueryQuery, yang melibatkan data , yang melibatkan data dalam sebuah database.dalam sebuah database.

Input dan output suatu query adalah relasi.Input dan output suatu query adalah relasi.

Query dievaluasi dengan menggunakan contoh input relasi dan Query dievaluasi dengan menggunakan contoh input relasi dan menghasilkan contoh output relasi.menghasilkan contoh output relasi.

Page 4: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 4

Aljabar RelasionalAljabar Relasional

Merupakan salah satu dari 2 bahasa query formal yang terkait Merupakan salah satu dari 2 bahasa query formal yang terkait dengan model relasional.dengan model relasional.

Memiliki operator – operator dasar aljabar :Memiliki operator – operator dasar aljabar :

-- SelectionSelection

-- ProjectionProjection

-- Operasi Himpunan (Operasi Himpunan (UnionUnion, , IntersectionIntersection, , Set – DifferenceSet – Difference, , Cross – ProductCross – Product))

-- RenamingRenaming

-- JoinJoin

-- DivisionDivision

Page 5: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 5

Selection dan ProjectionSelection dan Projection

Aljabar Relasional mencakup operator untuk memilih (Aljabar Relasional mencakup operator untuk memilih (selectionselection) )

baris dari satu relasi (baris dari satu relasi () dan untuk memproyeksikan () dan untuk memproyeksikan (projectionprojection) )

kolom (kolom ().).

Contoh :Contoh :

Unit Price >= Rp. 5.000.000,-Unit Price >= Rp. 5.000.000,- (Products)(Products)

Product ID, Product NameProduct ID, Product Name (Products) (Products)

Product ID, Product NameProduct ID, Product Name ( ( Unit Price >= Rp. 5.000.000,-Unit Price >= Rp. 5.000.000,- (Products))(Products))

CountryCountry (Customers) (Customers)

Page 6: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 6

Contoh Selection dan ProjectionContoh Selection dan Projection

Misalkan :Misalkan :

T1T1

AA BB CC DD

a1a1 b1b1 cc11 d1d1

a2a2 b1b1 cc22 d1d1

a2a2 b2b2 cc22 d1d1

a3a3 b2b2 cc33 d3d3

T2T2

AA BB CC DD

a1a1 b1b1 c1c1 d1d1

a2a2 b2b2 c1c1 d1d1

a4a4 b1b1 c2c2 d3d3

T3T3

AA EE FF

a1a1 e1e1 f1f1

a2a2 e2e2 f2f2

a3a3 e1e1 f3f3

a4a4 e2e2 f4f4

Page 7: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 7

Contoh Selection dan Projection Contoh Selection dan Projection (Lanjutan)(Lanjutan)

C > c1C > c1 (T1) (T1)

A, BA, B ( ( C > c1C > c1 (T1)) (T1))

AA (T1) (T1)

AA BB CC DD

a2a2 b1b1 cc22 d1d1

a2a2 b2b2 cc22 d1d1

a3a3 b2b2 cc33 d3d3

AA BB

a2a2 b1b1

a2a2 b2b2

a3a3 b2b2

AA

a1a1

a2a2

a3a3

Page 8: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 8

Operasi HimpunanOperasi Himpunan

Union (Union ())

R R S Menghasilkan suatu relasi yang berisi instan – instan yang S Menghasilkan suatu relasi yang berisi instan – instan yang terjadi dalam suatu relasi R atau suatu relasi S. R dan S haruslah terjadi dalam suatu relasi R atau suatu relasi S. R dan S haruslah Union – CompatibleUnion – Compatible dan skema hasil identik dengan skema R. dan skema hasil identik dengan skema R.

2 contoh relasi dikatakan Union – Compatible jika memenuhi 2 contoh relasi dikatakan Union – Compatible jika memenuhi persyaratan :persyaratan :

-- Memiliki jumlah field yang sama.Memiliki jumlah field yang sama.

-- Field yang berurutan, dalam urutan dari kiri ke kanan, Field yang berurutan, dalam urutan dari kiri ke kanan, memiliki memiliki domain yang sama.domain yang sama.

Page 9: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 9

Operasi Himpunan (Lanjutan)Operasi Himpunan (Lanjutan)

Intersection (Intersection ())

R R S menghasilkan suatu relasi yang berisi instan – instan yang S menghasilkan suatu relasi yang berisi instan – instan yang terjadi baik pada R dan S. Relasi R dan S harus terjadi baik pada R dan S. Relasi R dan S harus Union – Union – CompatibleCompatible dan skema hasil identik dengan skema R. dan skema hasil identik dengan skema R.

Set – Difference (Set – Difference (--))

R – S menghasilkan suatu relasi yang berisi instan – instan yang R – S menghasilkan suatu relasi yang berisi instan – instan yang terjadi pada R tetapi tidak terjadi pada S. Relasi R dan S harus terjadi pada R tetapi tidak terjadi pada S. Relasi R dan S harus Union – CompatibleUnion – Compatible dan skema hasil identik dengan skema R. dan skema hasil identik dengan skema R.

Page 10: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 10

Operasi Himpunan (Lanjutan)Operasi Himpunan (Lanjutan)

Cross – Product (Cross – Product ())

R R S menghasilkan suatu relasi yang skemanya berisi semua S menghasilkan suatu relasi yang skemanya berisi semua field R (dalam urutan yang sama dengan field R) diikuti dengan field R (dalam urutan yang sama dengan field R) diikuti dengan semua field S (dalam urutan yang sama dengan field S).semua field S (dalam urutan yang sama dengan field S).

Operasi Cross – Product disebut juga Operasi Cross – Product disebut juga Cartesian – ProductCartesian – Product..

Page 11: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 11

Contoh Operasi HimpunanContoh Operasi Himpunan

T1 T1 T2 T2

T1 T1 T2 T2

T1 – T2T1 – T2

AA BB CC DD

a1a1 b1b1 cc11 d1d1

aa22 b1b1 cc22 d1d1

a2a2 b2b2 c1c1 d1d1

aa22 b2b2 cc22 d1d1

aa33 b2b2 cc33 d3d3

a4a4 b1b1 c2c2 d3d3

AA BB CC DD

a1a1 b1b1 cc11 d1d1

AA BB CC DD

a2a2 b1b1 cc22 d1d1

a2a2 b2b2 cc22 d1d1

a3a3 b2b2 cc33 d3d3

Page 12: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 12

Contoh Operasi Himpunan Contoh Operasi Himpunan (Lanjutan)(Lanjutan)

T2 T2 T3 T3 ((AA)) BB CC DD (A)(A) EE FF

a1a1 b1b1 c1c1 d1d1 a1a1 e1e1 f1f1

a1a1 b1b1 c1c1 d1d1 a2a2 e2e2 f2f2

a1a1 b1b1 c1c1 d1d1 a3a3 e1e1 f3f3

a1a1 b1b1 c1c1 d1d1 a4a4 e2e2 f4f4

a2a2 b2b2 c1c1 d1d1 a1a1 e1e1 f1f1

a2a2 b2b2 c1c1 d1d1 a2a2 e2e2 f2f2

a2a2 b2b2 c1c1 d1d1 a3a3 e1e1 f3f3

a2a2 b2b2 c1c1 d1d1 a4a4 e2e2 f4f4

a4a4 b1b1 c2c2 d3d3 a1a1 e1e1 f1f1

a4a4 b1b1 c2c2 d3d3 a2a2 e2e2 f2f2

a4a4 b1b1 c2c2 d3d3 a3a3 e1e1 f3f3

a4a4 b1b1 c2c2 d3d3 a4a4 e2e2 f4f4

Page 13: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 13

RenamingRenaming

Dalam operasi himpunan Cross – Product, bisa menimbulkan terjadinya Dalam operasi himpunan Cross – Product, bisa menimbulkan terjadinya Konflik PenamaanKonflik Penamaan, karena Cross – Product bisa menghasilkan suatu , karena Cross – Product bisa menghasilkan suatu relasi dari 2 relasi dengan skema yang sama, sehingga skema hasil relasi dari 2 relasi dengan skema yang sama, sehingga skema hasil akan muncul field dengan nama yang sama.akan muncul field dengan nama yang sama.

Operator Renaming (Operator Renaming () digunakan untuk menghindari terjadinya Konflik ) digunakan untuk menghindari terjadinya Konflik Penamaan tersebut.Penamaan tersebut.

Ekspresi Renaming :Ekspresi Renaming :

Dimana R = Relasi, F = Daftar Renaming, E = Aljabar RelasionalDimana R = Relasi, F = Daftar Renaming, E = Aljabar Relasional

)))(),((( EFR

Page 14: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 14

Contoh RenamingContoh Renaming

(Temp (1 (Temp (1 A_1, 5 A_1, 5 A_2), T2 A_2), T2 T3) T3)

AA_1_1 BB CC DD A_2A_2 EE FF

a1a1 b1b1 c1c1 d1d1 a1a1 e1e1 f1f1

a1a1 b1b1 c1c1 d1d1 a2a2 e2e2 f2f2

a1a1 b1b1 c1c1 d1d1 a3a3 e1e1 f3f3

………………

………………

………………

a4a4 b1b1 c2c2 d3d3 a2a2 e2e2 f2f2

a4a4 b1b1 c2c2 d3d3 a3a3 e1e1 f3f3

a4a4 b1b1 c2c2 d3d3 a4a4 e2e2 f4f4

Page 15: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 15

Merupakan operasi yang digunakan untuk menggunakan informasi Merupakan operasi yang digunakan untuk menggunakan informasi dari dua atau lebih relasi ( ).dari dua atau lebih relasi ( ).

Condition JoinCondition Join

EquijoinEquijoin

Natural JoinNatural Join

JoinJoin

Page 16: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 16

Condition JoinCondition Join

Condition Join identik dengan Selection Condition. Bentuk Condition Join identik dengan Selection Condition. Bentuk operasinya yakni :operasinya yakni :

R R cc S = S = cc (R (R S) S)

Jadi, Condition Join ditentukan untuk menjadi sebuah Cross – Jadi, Condition Join ditentukan untuk menjadi sebuah Cross – Product yang diikuti dengan satu selection.Product yang diikuti dengan satu selection.

Page 17: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 17

EquijoinEquijoin

Satu kasus khusus yang biasa terjadi pada operasi join R S Satu kasus khusus yang biasa terjadi pada operasi join R S adalah pada saat condition join hanya terdiri dari equality dari adalah pada saat condition join hanya terdiri dari equality dari bentuk bentuk R.name1 = S.name1R.name1 = S.name1, yakni equality antara 2 field dalam , yakni equality antara 2 field dalam R dan S. Operasi join seperti ini disebut R dan S. Operasi join seperti ini disebut EquijoinEquijoin..

Skema hasil dari equijoin yang berisi field R (dengan nama dan Skema hasil dari equijoin yang berisi field R (dengan nama dan domain yang sama seperti di dalam R) diikuti dengan field S yang domain yang sama seperti di dalam R) diikuti dengan field S yang tidak muncul di dalam condition join. Jika himpunan field dalam tidak muncul di dalam condition join. Jika himpunan field dalam relasi hasil itu memasukkan 2 field yang mewarisi nama dari R relasi hasil itu memasukkan 2 field yang mewarisi nama dari R dan S, maka relasi hasilnya tidak diberi nama.dan S, maka relasi hasilnya tidak diberi nama.

Page 18: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 18

Natural JoinNatural Join

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

R SR S

Page 19: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 19

Contoh Condition JoinContoh Condition Join

T2 T2 T2.A > T3.AT2.A > T3.A T3 T3

((AA)) BB CC DD (A)(A) EE FF

a2a2 b2b2 c1c1 d1d1 a1a1 e1e1 f1f1

a4a4 b1b1 c2c2 d3d3 a1a1 e1e1 f1f1

a4a4 b1b1 c2c2 d3d3 a2a2 e2e2 f2f2

a4a4 b1b1 c2c2 d3d3 a3a3 e1e1 f3f3

Page 20: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 20

Contoh Equijoin & Natural JoinContoh Equijoin & Natural Join

T2 T2 T2.A = T3.AT2.A = T3.A T3 T3

Contoh tersebut dapat juga ditulis menjadi :Contoh tersebut dapat juga ditulis menjadi :

T2 T3T2 T3

AA BB CC DD EE FF

a1a1 b1b1 c1c1 d1d1 e1e1 f1f1

a2a2 b2b2 c1c1 d1d1 e2e2 f2f2

a4a4 b1b1 c2c2 d3d3 e2e2 f4f4

Page 21: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 21

DivisionDivision

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

Page 22: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 22

Contoh DivisionContoh Division

A, BA, B (T1) (T1)

BB (T1) (T1)

AA BB

a1a1 b1b1

a2a2 b1b1

a2a2 b2b2

a3a3 b2b2

BB

bb11

b2b2

BB ( ( B = b1B = b1 (T1)) (T1))

BB

bb11

Page 23: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 23

Contoh Division (Lanjutan)Contoh Division (Lanjutan)

A, BA, B (T1) / (T1) / BB (T1) (T1)

A, BA, B (T1) / (T1) / BB ( ( B = b1B = b1 (T1)) (T1))

AA

aa22

AA

aa11

a2a2

Page 24: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 24

Contoh Query AljabarContoh Query Aljabar

Misalkan :Misalkan :

CustomersCustomers ( ( CustomerIDCustomerID, ContactName, Genre, Address, City, , ContactName, Genre, Address, City, Region, Country, ZIP, Phone )Region, Country, ZIP, Phone )

ProductsProducts ( ( ProductIDProductID, ProductName, UnitPrice, UnitInStock, , ProductName, UnitPrice, UnitInStock, UnitOnOrder )UnitOnOrder )

OrdersOrders ( ( OrderIDOrderID, CustomerID, OrderDate ), CustomerID, OrderDate )

Order DetailOrder Detail ( ( OrderIDOrderID, , ProductIDProductID, UnitPrice, Quantity, Discount ), UnitPrice, Quantity, Discount )

Page 25: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 25

Contoh Query Aljabar (Lanjutan)Contoh Query Aljabar (Lanjutan)

Cari nama pelanggan yang pernah memesan barang pada tanggal Cari nama pelanggan yang pernah memesan barang pada tanggal “xx / xx / xxxx”.“xx / xx / xxxx”.

ContactNameContactName (( (( OrderDate = ‘xx / xx / xxxx’OrderDate = ‘xx / xx / xxxx’ Orders) Customers) Orders) Customers)

AtauAtau

(Temp1, (Temp1, OrderDate = ‘xx / xx / xxxx’OrderDate = ‘xx / xx / xxxx’ Orders) Orders)

(Temp2, Temp1 Customers)(Temp2, Temp1 Customers)

ContactNameContactName (Temp2) (Temp2)

Page 26: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 26

Contoh Query Aljabar (Lanjutan)Contoh Query Aljabar (Lanjutan)

Cari nama pelanggan yang pernah memesan barang dengan kode Cari nama pelanggan yang pernah memesan barang dengan kode barang = “xxx”.barang = “xxx”.

ContactNameContactName (( (( ProductID = ‘xxx’ProductID = ‘xxx’ (Order Detail)) Orders (Order Detail)) Orders

Customers)Customers)

AtauAtau

(Temp1, (Temp1, ProductID = ‘xxx’ProductID = ‘xxx’ (Order Detail)) (Order Detail))

(Temp2, Temp1 Orders)(Temp2, Temp1 Orders)

(Temp3, Temp2 Customers)(Temp3, Temp2 Customers)

ContactNameContactName (Temp3) (Temp3)

Page 27: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 27

Contoh Query Aljabar (Lanjutan)Contoh Query Aljabar (Lanjutan)

Cari negara yang pernah memesan barang yang berdiskon dan Cari negara yang pernah memesan barang yang berdiskon dan jumlah barang yang dipesan diatas 10 unit.jumlah barang yang dipesan diatas 10 unit.

CountryCountry (( (( Discount > 0 Discount > 0 Quantity > 10 Quantity > 10 (Order Detail)) Orders (Order Detail)) Orders

Customers)Customers)

AtauAtau

CountryCountry (( (( Discount > 0 Discount > 0 (Order Detail) (Order Detail) Quantity > 10 Quantity > 10 (Order Detail)) (Order Detail))

Orders Customers)Orders Customers)

AtauAtau

Page 28: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 28

Contoh Query Aljabar (Lanjutan)Contoh Query Aljabar (Lanjutan)

(Temp1, (Temp1, Discount > 0Discount > 0 (Order Detail)) (Order Detail))

(Temp2, (Temp2, Quantity > 10Quantity > 10 (Order Detail)) (Order Detail))

(Temp3, Temp1 (Temp3, Temp1 Temp2) Temp2)

(Temp4, Temp3 Orders)(Temp4, Temp3 Orders)

(Temp5, Temp4 Customers)(Temp5, Temp4 Customers)

Country (Temp5)Country (Temp5)

Page 29: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 29

Contoh Query Aljabar (Lanjutan)Contoh Query Aljabar (Lanjutan)

Cari nama barang dan sisa stok yang ada untuk barang yang tidak Cari nama barang dan sisa stok yang ada untuk barang yang tidak memiliki diskon atau harga barang / unitnya dibawah Rp. 50.000,-.memiliki diskon atau harga barang / unitnya dibawah Rp. 50.000,-.

ProductName, UnitInStockProductName, UnitInStock (( (( Discount = 0 Discount = 0 UnitPrice < Rp. 50.000,- UnitPrice < Rp. 50.000,-

(Order Detail)) Products)(Order Detail)) Products)

AtauAtau

ProductName, UnitInStockProductName, UnitInStock (( (( Discount = 0 Discount = 0 (Order Detail) (Order Detail)

UnitPrice < Rp. 50.000,-UnitPrice < Rp. 50.000,- (Order Detail)) Products) (Order Detail)) Products)

AtauAtau

Page 30: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 30

Contoh Query Aljabar (Lanjutan)Contoh Query Aljabar (Lanjutan)

(Temp1, (Temp1, Discount = 0Discount = 0 (Order Detail)) (Order Detail))

(Temp2, (Temp2, UnitPrice < Rp. 50.000,-UnitPrice < Rp. 50.000,- (Order Detail)) (Order Detail))

(Temp3, Temp1 (Temp3, Temp1 Temp2) Temp2)

(Temp4, Temp3 Products)(Temp4, Temp3 Products)

(Hasil, (Hasil, ProductName, UnitInStockProductName, UnitInStock (Temp4)) (Temp4))

Page 31: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 31

Contoh Query Aljabar (Lanjutan)Contoh Query Aljabar (Lanjutan)

Cari nama pelanggan yang sudah pernah memesan barang paling Cari nama pelanggan yang sudah pernah memesan barang paling sedikit 2x.sedikit 2x.

(Pesanan, (Pesanan, CustomerID, ContactName, OrderIDCustomerID, ContactName, OrderID (Customers (Customers

Orders))Orders))

(Pesanan2 (1 (Pesanan2 (1 CID1, 2 CID1, 2 Name1, 3 Name1, 3 OID1, 4 OID1, 4 CID2, 5 CID2, 5

Name2, 6 Name2, 6 OID2), Pesanan OID2), Pesanan Pesanan) Pesanan)

Name1Name1 ( ( (CID1 = CID2) (CID1 = CID2) (OID1 <> OID2) (OID1 <> OID2) Pesanan2) Pesanan2)

Page 32: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 32

Kalkulus RelasionalKalkulus Relasional

Merupakan alternatif untuk aljabar relasional.Merupakan alternatif untuk aljabar relasional.

Memungkinkan kita menggambarkan himpunan jawaban tanpa Memungkinkan kita menggambarkan himpunan jawaban tanpa menyatakan secara eksplisit bagaimana jawaban tersebut menyatakan secara eksplisit bagaimana jawaban tersebut dihitung.dihitung.

Memiliki pengaruh yang besar pada desain bahasa query Memiliki pengaruh yang besar pada desain bahasa query komersial seperti SQL.komersial seperti SQL.

Varian kalkulus yang disajikan secara detil disebut Varian kalkulus yang disajikan secara detil disebut Tuple Tuple Relational CalculusRelational Calculus ( (TRCTRC) dimana pada TRC mengambil instan ) dimana pada TRC mengambil instan (tuple) sebagai nilainya.(tuple) sebagai nilainya.

Page 33: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 33

Tuple Relational CalculusTuple Relational Calculus

Variabel Tuple merupakan variabel yang nilainya diambil dari Variabel Tuple merupakan variabel yang nilainya diambil dari tuple skema relasi tertentu, sehingga nilai yang ditentukan untuk tuple skema relasi tertentu, sehingga nilai yang ditentukan untuk satu variabel tuple tertentu, punya jumlah dan tipe field yang satu variabel tuple tertentu, punya jumlah dan tipe field yang sama.sama.

Bentuk tuple dari query kalkulus relasional :Bentuk tuple dari query kalkulus relasional :

{ T | p ( T ) }{ T | p ( T ) }

dimana dimana TT adalah sebuah variabel tuple dan adalah sebuah variabel tuple dan p(T)p(T) adalah sebuah adalah sebuah formula yang menggambarkan T.formula yang menggambarkan T.

Hasil dari query adalah himpunan dari semua tuple Hasil dari query adalah himpunan dari semua tuple tt dimana dimana formula p(T) mengevaluasi formula p(T) mengevaluasi truetrue dengan dengan T = tT = t..

Penulisan formula p(T) adalah inti dari TRC dan pada dasarnya Penulisan formula p(T) adalah inti dari TRC dan pada dasarnya merupakan satu subset sederhana dari merupakan satu subset sederhana dari First – Order LogicFirst – Order Logic..

Page 34: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 34

Syntax TRC QuerySyntax TRC Query

RelRel adalah nama relasi. adalah nama relasi.

RR dan dan SS adalah variabel tuple. adalah variabel tuple.

aa adalah atribut dari R. adalah atribut dari R.

bb adalah atribut dari S. adalah atribut dari S.

opop adalah operator pada himpunan { <, >, =, adalah operator pada himpunan { <, >, =, , , , , } }

Atomic formulaAtomic formula adalah salah satu dari formula berikut : adalah salah satu dari formula berikut :

-- R R Rel Rel

-- R.a op S.bR.a op S.b

-- R.a op constantR.a op constant, atau , atau constant op R.aconstant op R.a

Page 35: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 35

Syntax TRC Query (Lanjutan)Syntax TRC Query (Lanjutan)

Formula didefinisikan secara rekursif untuk menjadi salah satu dari Formula didefinisikan secara rekursif untuk menjadi salah satu dari daftar berikut ini, dimana p dan q adalah formula dan p(R) daftar berikut ini, dimana p dan q adalah formula dan p(R) menggambarkan formula dimana variabel R muncul :menggambarkan formula dimana variabel R muncul :

Semua atomic formulaSemua atomic formula

pp, , p p q q, , p p q q, atau , atau p p q q

R ( p ( R ) )R ( p ( R ) ), dimana R adalah variabel tuple, dimana R adalah variabel tuple

R ( p ( R ) )R ( p ( R ) ), dimana R adalah variebel tuple, dimana R adalah variebel tuple

Page 36: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 36

Semantik TRC QuerySemantik TRC Query

Setiap variabel bebas pada sebuah formula F terikat pada nilai Setiap variabel bebas pada sebuah formula F terikat pada nilai tuple. Untuk penetapan tuple tertentu ke variabel, dengan tuple. Untuk penetapan tuple tertentu ke variabel, dengan memperhatikan contoh database, F dievaluasi ke true jika salah satu memperhatikan contoh database, F dievaluasi ke true jika salah satu hal berikut terpenuhi :hal berikut terpenuhi :

F adalah F adalah formula atomic R formula atomic R Rel Rel, dan R adalah tuple di dalam , dan R adalah tuple di dalam instance relation Rel.instance relation Rel.

F adalah komparasi F adalah komparasi R.a op S.bR.a op S.b, , R.a op constantR.a op constant, atau , atau constant constant op R.aop R.a, dan tuple yang ditentukan untuk R dan S mempunyai , dan tuple yang ditentukan untuk R dan S mempunyai nilai – nilai field R.a dan S.b yang menghasilkan komparasi true.nilai – nilai field R.a dan S.b yang menghasilkan komparasi true.

F adalah form F adalah form pp dan dan pp bukan bukan truetrue, atau form , atau form p p q q, dan baik p , dan baik p dan q adalah dan q adalah truetrue, atau , atau p p q q dan salah satunya adalah dan salah satunya adalah truetrue, ,

atau form atau form p p q q dan q adalah dan q adalah truetrue kapan saja p adalah kapan saja p adalah truetrue..

Page 37: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 37

Semantik TRC Query (Lanjutan)Semantik TRC Query (Lanjutan)

F adalah form F adalah form R(p(R)) R(p(R)), dan ada beberapa tuple untuk variabel , dan ada beberapa tuple untuk variabel bebas pada bebas pada p(R)p(R), termasuk variabel R yang membuat formula , termasuk variabel R yang membuat formula p(R)p(R) menjadi menjadi truetrue..

F adalah form F adalah form R(p(R)) R(p(R)), dan ada beberapa tuple untuk variabel , dan ada beberapa tuple untuk variabel bebas pada bebas pada p(R)p(R) yang membuat formula yang membuat formula p(R)p(R) truetrue tidak peduli tidak peduli tuple apa yang ditentukan untuk R.tuple apa yang ditentukan untuk R.

Page 38: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 38

Contoh TRC QueryContoh TRC Query

Cari nama barang yang stoknya masih ada.Cari nama barang yang stoknya masih ada.

{ A | { A | P P Products (A.ProductName = P.ProductName Products (A.ProductName = P.ProductName

P.UnitInStock > 0) }P.UnitInStock > 0) }

Cari nama barang dan harga per unit untuk barang yang stoknya Cari nama barang dan harga per unit untuk barang yang stoknya masih ada.masih ada.

{ A | { A | P P Products (A.ProductName = P.ProductName Products (A.ProductName = P.ProductName

A.UnitPrice = P.UnitPrice A.UnitPrice = P.UnitPrice P.UnitInStock > 0) } P.UnitInStock > 0) }

Page 39: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 39

Contoh TRC Query (Lanjutan)Contoh TRC Query (Lanjutan)

Cari nama pelanggan yang pernah memesan barang pada Cari nama pelanggan yang pernah memesan barang pada tanggal “xx / xx / xxxx”tanggal “xx / xx / xxxx”

{ A | { A | C C Customers Customers O O Orders (C.CustomerID = Orders (C.CustomerID =

O.CustomerID O.CustomerID A.ContactName = C.ContactName A.ContactName = C.ContactName

O.OrderDate = ‘xx / xx / xxxx’) }O.OrderDate = ‘xx / xx / xxxx’) }

Cari nama pelanggan yang pernah memesan barang dengan Cari nama pelanggan yang pernah memesan barang dengan kode barang = “xxx”.kode barang = “xxx”.

{ A | { A | C C Customers Customers O O Orders Orders D D (Order Detail) (Order Detail)

(C.CustomerID = O.CustomerID (C.CustomerID = O.CustomerID O.OrderID = D.OrderID O.OrderID = D.OrderID

A.ContactName = C.ContactName A.ContactName = C.ContactName D.ProductID = ‘xxx’) } D.ProductID = ‘xxx’) }

Page 40: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 40

Contoh TRC Query (Lanjutan)Contoh TRC Query (Lanjutan)

Cari negara yang pernah memesan barang yang berdiskon dan Cari negara yang pernah memesan barang yang berdiskon dan jumlah barang yang dipesan diatas 10 unit.jumlah barang yang dipesan diatas 10 unit.

{ A | { A | C C Customers Customers O O Orders Orders D D (Order Detail) (Order Detail)

(C.CustomerID = O.CustomerID (C.CustomerID = O.CustomerID O.OrderID = D.OrderID O.OrderID = D.OrderID

A.Country = C.Country A.Country = C.Country D.Discount > 0 D.Discount > 0 D.Quantity > 10) } D.Quantity > 10) }

Page 41: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 41

Contoh TRC Query (Lanjutan)Contoh TRC Query (Lanjutan)

Cari nama barang dan sisa stok yang ada untuk barang yang tidak Cari nama barang dan sisa stok yang ada untuk barang yang tidak memiliki diskon atau harga barang / unitnya dibawah Rp. 50.000,-.memiliki diskon atau harga barang / unitnya dibawah Rp. 50.000,-.

{ A | { A | P P Products Products O O (Order Detail) (P.ProductID = (Order Detail) (P.ProductID =

O.ProductID O.ProductID A.ProductName = P.ProductName A.ProductName = P.ProductName

A.UnitInStock = P.UnitInStock A.UnitInStock = P.UnitInStock (O.Discount = 0 (O.Discount = 0 O.UnitPrice < O.UnitPrice <

Rp. 50.000,-)) }Rp. 50.000,-)) }

Page 42: Sesi_5_Aljabar_dan_Kalkulus_Relasional

Sistem / Teknologi Basis Data 42

Tanya - JawabTanya - Jawab