domain relational calculus.

Download Report

Transcript domain relational calculus.

Relational Calculus

Basis Data Pertemuan 05

Pendahuluan

    Query kalkulus relasional lebih menspesifikasikan apa yang harus ditampilkan/diambil (

retrieved

) daripada bagaimana menampilkan/mengambilnya.  Tidak ada deskripsi bagaimana meng-evaluasi suatu query.

Nama kalkulus relasional diambil dari

predicate calculus

. Dalam

first-order logic

(atau predicate calculus),

predicate

merupakan fungsi berargumen yang bernilai benar. Ketika suatu nilai disubtitusikan untuk argumen tersebut, fungsi menghasilkan ekspresi, yang disebut

proposition

, yang dapat bernilai benar atau salah. kalkulus relasional berbentuk :

tuple relational calculus

dan

domain relational calculus.

Contoh

  terdapat kalimat “

john white is a member of staff

“ dan “ kedua.

john white earns more than ann beech

pertama mempunyai fungsi “ “, kedua kalimat tersebut adalah proposisi. Kalimat

is a member of staff

“ dengan argumen john white, begitupun kalimat Jika predikat berisi sebuah variable (mis, ‘ untuk

x x

adalah jumlah staff’), maka harus ada range . Ketika disubtitusikan beberapa nilai dari range

x

lainnya. ini, proposisi mungkin bernilai benar untuk suatu nilai, dan bernilai salah untuk

Predikat

 Maka jika P adalah predikat, maka himpunan x untuk P dapat dituliskan sbb : { x | P (x) }  predikat dapat digabungkan dengan Λ (AND), V (OR), dan ~ (NOT)

Tuple Relational Calculus

 Ditujukan untuk menampilkan tuple untuk predikat yang bernilai benar dengan menggunakan variabel tuple (

tuple variables

).  variable Tuple adalah variable yang meliputi (

ranges over

) relasi bernama, contoh : variable yang hanya diperbolehkan yang merupakan tuple-tuple dari suatu relasi.

Tuple Relational Calculus(2)

 menetapkan range dari variable tuple

S

sebagai relasi Staff sbb: Staff(S)  Untuk mengetahui himpunan dari semua tuple S dimana P(S) adalah benar : {S | P(S)}

Contoh:

 mencari detail dari semua staff yang berpenghasilan lebih dari £10,000 : {S | Staff(S)  S.salary > 10000} S.salary berarti nilai dari atribut salary diberikan untuk variabel tuple S.

 Untuk menampilkan atribut tertentu seperti salary, dapat ditulis {S.salary | Staff(S)  : S.salary > 10000}

quantifier

 Dapat menggunakan dua buah

quantifier

untuk mengetahui berapa banyak instances yang diperoleh dari suatu predikat, yaitu: Existential quantifier  (‘there exists’) Universal quantifier  (‘for all’)

Existential quantifier

(‘there exists’)

 akan bernilai benar jika sedikitnya terdapat 1 buah instance yang memenuhi syarat. Contoh :  Staff(S)  (  B)(Branch(B)  S.branchNo)  B.c

(B.branchNo= ity = ‘London’) • Berarti, terdapat tuple branch dengan branchNo yang sama dengan branchNo dari tuple Staff ,

S

, dan berlokasi di London’.

Universal quantifier

(‘for all’)

 akan bernilai benar jika setiap instance memenuhi syarat.  Contoh :

(

B) (B.city

‘Paris’)

 Berarti, untuk semua tuple Branch, yang tidak beralamat di paris  atau dapat ditulis  :

~(

B) (B.city = ‘Paris’)

yang berarti ‘tidak ada branch dengan alamat paris’

Penerapan hukum De Morgan

 (  X) (F(X))   (  X) (F(X))  ~ (  X) (~(F(X))) ~ (  X) (~(F(X)))  (  X) (F1(X)  F2(X))  ~ (  X) (~(F1(X)) V ~(F2(X)))  (  X) (F1(X)  ~(F2(X))) F2(X))  ~ (  X) (~(F1(X)) V

Ekspresi dalam kalkulus tuple relasional

{ S1.a1, S2.a2,…,Sn.an | F (S1,S2,…Sm ) m >= n   

R(Si )

, dimana

Si

adalah variable tuple dan

R

adalah relasi

Si.a1

Sj.a2 ,

dimana

Si.

dan

Sj.

merupakan variable tuple.

a1

adalah atribut dari relasi pada range

Si.

,

a2

adalah atribut dari relasi pada range

Sj.

dan  operator pembanding.

Si.a1

c

dimana

Si.

adalah variable tuple.

a1

adalah atribut dari relasi pada range

Si.

, c adalah konstanta dari domain atribut a

1

dan  operator pembanding.

Ketentuan Pembuatan Ekspresi

 ekspresi tersebut tersebut bersifat atomic  jika

F

1 dan

F

2 adalah suatu ekspresi, maka

conjunction F

1 

F

2; disjunction

F

1V

F

2; dan negasi, ~

F

1 juga ekspresi.

 jika

F

adalah ekspresi dengan variable bebas

X

, maka ( 

X)

(

F

) dan ( 

X)

(

F

) juga merupakan ekspresi.

Contoh

 Tampilkan nama seluruh manager yang memiliki penghasilan lebih dari £25,000.

{S.fName, S.lName | Staff(S)  ‘Manager’  S.salary > 25000} S.position =  Tampilkan staff yang mengatur property untuk disewakan dikota Glasgow.

{S | Staff(S)  (  P) (PropertyForRent(P)  (P.staffNo = S.staffNo)  P.city = ‘Glasgow’)}

Contoh

 Tampilkan nama staff yang tidak mengatur property apapun  {S.fName, S.lName | Staff(S)  (~(  P) (PropertyForRent(P)  (S.staffNo = P.staffNo)))} Or  {S.fName, S.lName | Staff(S)  (~PropertyForRent(P)  ((  P) ~(S.staffNo = P.staffNo)))}

Contoh

Tampilkan nama klien yang telah melihat property di Glasgow.

{C.fName, C.lName | Client(C) (Viewing(V)   ((  V)(  P) PropertyForRent(P)  (C.clientNo = V.clientNo)  (V.propertyNo=P.propertyNo)  P.city =‘Glasgow’))}

Ekspresi tak hingga

 Suatu ekspresi dapat menghasilkan himpunan tak hingga, contoh {S | ~Staff(S)}  Untuk mengatasi hal tersebut, tambahkan batasan bahwa semua nilai yang dihasilkan harus merupakan nilai dalam domain ekspresi.

Domain Relational Calculus

 Menggunakan variable yang diambil dari domain pada suatu relasi.

 Bentuk umum ekspresi domain relational calculus: {

d

1,

d

2, . . . ,

dn

| F(

d

1,

d

2, . . . ,

dn

)}  dimana F(

d

1,

d

2, . . . ,

dn

) merupakan formula yang disusun dari atom-atom dan

d

1,

d

2, . . . ,

dn

merepresentasikan domain variables.

Contoh

Tampilkan nama seluruh manager dengan penghasilan lebih dari £25,000.

 {fN, lN | (  sN, posn, sex, DOB, sal, bN) (Staff (sN, fN, lN, posn, sex, DOB, sal, bN)  posn = ‘Manager’  sal > 25000)} 

Tampilkan staff yang mengatur property untuk disewakan di Glasgow

 {sN, fN, lN, posn, sex, DOB, sal, bN |  sN1,cty)(Staff(sN,fN,lN,posn,sex,DOB,sal,bN)  PropertyForRent(pN, st, cty, pc, typ, rms, rnt, oN, sN1, bN1)  (sN=sN1) cty=‘Glasgow’)}

Contoh

Tampilkan nama staff yang tidak mengatur property apapun

 {fN, lN | (  sN)(Staff(sN,fN,lN,posn,sex,DOB,sal,bN)  (~(  sN1)(PropertyForRent(pN, st, cty, pc, typ, rms, rnt, oN, sN1, bN1)  (sN=sN1))))} 

Tampilkan nama klien yang telah melihat property di Glasgow.

 {fN, lN | ($cN, cN1, pN, pN1, cty)(Client(cN, fN, lN,tel, pT, mR)  Viewing(cN1, pN1, dt, cmt)  PropertyForRent(pN, st, cty, pc, typ, rms, rnt,oN, sN, bN)  (cN = cN1)  (pN = pN1)  cty = ‘Glasgow’)}

Catatan

 Ketika dibatasi untuk menyimpan ekspresi, domain relational calculus ekuivalen dengan tuple relational calculus terbatas untuk menyimpan ekspresi, dimana ekuivalen dengan relational algebra.  Yang berarti, setiap ekspresi aljabar relasional terdapat ekuivalensinya dalam ekspresi kalkulus relasional, dan sebaliknya.