Minggu VI aljabar_dan_kalkulus_relasional

Download Report

Transcript Minggu VI aljabar_dan_kalkulus_relasional

1
Pertanyaan
 Apa itu Aljabar Relasional ?
 Apa itu operator aljabar dasar, dan bagaimana mereka dikombinasikan
untuk menulis query – query kompleks ?
 Apa itu Kalkulus Relasional ?
 Subset logika matematika apa yang digunakan di dalam kalkulus
relasional, dan bagaimana digunakan untuk menuliskan query ?
2
Aljabar & Kalkulus 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.
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
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)
5
Contoh Selection dan Projection
Misalkan :
T1
T3
T2
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
6
Contoh Selection dan Projection (Lanjutan)
  C > c1 (T1)

 A (T1)
A
B
C
D
A
a2
b1
c2
d1
a1
a2
b2
c2
d1
a2
a3
b2
c3
d3
a3
  A, B ( C > c1 (T1))
A
B
a2
b1
a2
b2
a3
b2
7
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.
8
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.
9
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.
10
Contoh Operasi Himpunan
 T1  T2

T1 – T2
A
B
C
D
A
B
C
D
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
a1
b1
c1
d1
11
Contoh Operasi Himpunan (Lanjutan)
 T2  T3
(A)
B
C
D
(A)
E
F
a1
b1
c1
d1
a1
e1
f1
a1
b1
c1
d1
a2
e2
f2
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
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
12
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
13
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
………
………
………
14
Join
Merupakan operasi yang digunakan untuk menggunakan informasi dari
dua atau lebih relasi ( ).
 Condition Join
 Equijoin
 Natural Join
15
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.
16
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.
17
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
18
Contoh Condition Join
T2
T2.A > T3.A
T3
(A)
B
C
D
(A)
E
F
a2
b2
c1
d1
a1
e1
f1
a4
b1
c2
d3
a1
e1
f1
a4
b1
c2
d3
a2
e2
f2
a4
b1
c2
d3
a3
e1
f3
19
Contoh Equijoin & Natural Join
T2
T2.A = T3.A
T3
A
B
C
D
E
F
a1
b1
c1
d1
e1
f1
a2
b2
c1
d1
e2
f2
a4
b1
c2
d3
e2
f4
Contoh tersebut dapat juga ditulis menjadi :
T2
T3
20
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.
21
Contoh Division
  A, B (T1)

 B ( B = b1 (T1))
A
B
B
a1
b1
b1
a2
b1
a2
b2
a3
b2
  B (T1)
B
b1
b2
22
Contoh Division (Lanjutan)
  A, B (T1) /  B (T1)
A
a2
  A, B (T1) /  B ( B = b1 (T1))
A
a1
a2
23
Contoh Query Aljabar
Misalkan :
Customers ( CustomerID, ContactName, Genre, Address, City, Region,
Country, ZIP, Phone )
Products ( ProductID,
UnitOnOrder )
ProductName,
UnitPrice,
UnitInStock,
Orders ( OrderID, CustomerID, OrderDate )
Order Detail ( OrderID, ProductID, UnitPrice, Quantity, Discount )
24
Contoh Query Aljabar (Lanjutan)
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)
25
Contoh Query Aljabar (Lanjutan)
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)
26
Contoh Query Aljabar (Lanjutan)
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
27
Contoh Query Aljabar (Lanjutan)
 (Temp1,  Discount > 0 (Order Detail))
 (Temp2,  Quantity > 10 (Order Detail))
 (Temp3, Temp1  Temp2)
 (Temp4, Temp3
Orders)
 (Temp5, Temp4
Customers)
 Country (Temp5)
28
Contoh Query Aljabar (Lanjutan)
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
29
Contoh 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))
30
Contoh Query Aljabar (Lanjutan)
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)
31
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.
32
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.
33
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
34
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
35
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,
form p  q dan q adalah true kapan saja p adalah true.
atau
36
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.
37
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) }
38
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’) }
39
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) }
40
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,-)) }
41
Tanya - Jawab
42