Operator Relasi, Tuple Relational Calculus, dan Domain Relational Calculus

  1. Dasar Teori

Bahasa query relasional formal merupakan bahasa yang digunakan dalam basis data, sehingga dapat diterapkan untuk memperoleh informasi secara efisien. Bahasa query relasional formal dibagi menjadi dua, yaitu relasi aljabar dan relasi kalkulus.[2]

Aljabar relasional merupakan bagian dari ilmu komputer, aljabar relasional ini mempelajari sekumpulan operasi terhadap relasi. Setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru dan termasuk kategori prosedural. Operasi ini juga menyediakan seperangkat operator untuk memanipulasi data. Terdapat lima primitif dari aljabar yang dikemukakan oleh Edgar F. Codd, yaitu seleksi  (selection), projeksi (projection), perkalian silang (cartesian product), gabungan himpunan (set union), pengurangan himpunan (set difference). Operator lainnya adalah pengubahan nama (rename) yang tidak disampaikan oleh Codd, namun operator ini tetap dibutuhkan.[1]

Berbeda dengan aljabar relasional, kalkulus relasional tidak memiliki deskripsi pemrosesan suatu query, tetapi cukup dengan mendefinisikan apa yang diinginkan. Dengan kata lain, kalkulus relasional tidak prosedural. Kalkulus relasional ini memiliki dua bentuk, yaitu kalkulus relasional tuple (tuple relational calculus) dan kalkulus relasional domain (domain relational calculus).

  1. Penjelasan

2.1        Operasi Aljabar Relasional

2.1.1     Selection

Operasi ini adalah operasi tunggal (unary). Ditulis sebagai sj(R) dimana j adalah sebuah rumus proposisi yang dapat dihubungkan oleh operator logika, seperti Ù (dan), Ú(atau), dan Ø (negasi). Setiap proposisi ini memiliki bentuk <atribut> operator <atribut> atau <konstanta>. Operator ini memilih semua tuple yang berada di R yang memenuhi j.

Contoh penggunaan selection sA=BÙD>5 (R)

pada tabel relasi R

 

A

B

C

D

d

d

2

6

d

e

4

3

e

e

5

6

e

e

7

8

 

Adalah

A

B

C

D

d

d

2

6

e

e

5

6

e

e

7

8

2.1.2     Projection

Operator ini digunakan untuk operasi tunggal, ditulis sebagai Õa1,…,an(R) dimana a1,…,an adalah sekumpulan nama atribut. Hasil dari projection ini adalah himpunan yang muncul ketika semua tuple di R dibatasi oleh himpunan {a1,…,an}. Dengan kata lain, kolom yang tidak disebutkan dalam projection ini dihilangkan. Jika terdapat baris dengan nilai yang sama, maka baris tersebut dapat ditulis sekali. Dengan operasi ÕA,C(R) pada tabel relasi R: [4]

 

A

B

C

a

d

g

b

e

h

c

f

i

Adalah

 

A

C

a

g

b

h

c

i

 

2.1.3     Cartesian Product

Operasi ini dinotasikan dengan r x s. Didefinisikan sebagai

r x s = {t q | t Î r Ù q Î s}

dengan operasi r x s pada tabel relasi r

 

A

B

1

2

4

3

 

Dan tabel relasi s

 

D

E

a

g

b

h

c

i

 

Menghasilkan tabel relasi

 

A

B

D

E

1

2

a

g

1

2

b

h

1

2

c

i

4

3

a

g

4

3

b

h

4

3

c

i

 

2.1.4     Set Union

Operasi ini dinotasikan dengan r È s, yang didefinisikan dengan

r È s = {t | t Î r Ú t Î s}

agar r È s valid, maka r, s harus memiliki kesamaan jumlah atribut, dan domain atribut harus kompatibel. Contohnya, dengan operasi r È s pada tabel relasi r

 

A

B

b

1

a

2

 

Dan relasi s

A

B

c

3

 

Menghasilkan

A

B

b

1

a

2

c

3

 

2.1.5     Set Difference

Operasi ini memiliki notasi r – s dan didefinisikan sebagai

r – s = {t | t Î r Ù q Ï s }

agar r – s valid, maka r dan s harus memiliki kesamaan jumlah atribut, dan domain atribut harus kompatibel. Contohnya, dengan operasi r –s pada tabel relasi r

 

A

B

a

2

b

1

 

Dan relasi s

A

B

b

1

 

Menghasilkan

A

B

a

2

 

2.1.6     Rename

Operasi ini adalah operasi tunggal dengan notasi ra/b(R) dimana hasilnya identik dengan R kecuali field b dalam semua tuple diubah ulang namanya pada sebuah field. Operasi ini biasanya digunakan untuk mengubah nama atribut relasi. Dengan mengubah ini, terdapat keuntungan, yaitu memperbolehkan kita untuk menunjuk pada suatu relasi dengan lebih dari satu nama. Jika ada relasi R dan kita menggunakan operasi ra(R), maka relasi R dapat dipanggil dengan nama a.

 

2.1.7     Set-Intersection

Operasi ini digunakan untuk memperoleh suatu informasi yang beririsan. Operasi ini memiliki notasi (∩). Misalkan kita ingin mendapatkan informasi semua a yang memiliki b dan c dari suatu relasi, maka kita dapat menuliskan

Õa(b) ∩Õa(c)

Pada set intersection ini memiliki hubungan dengan set difference, yaitu

r ∩ s = r – (r – s)

 

2.1.8     Natural join

Operasi ini adalah operasi binary. Operasi ini melakukan perkalian seleksi dengan melihat kesamaan atribut antara dua relasi. Pada saat melakukan operasi ini, atribut yang terduplikasi akan dihapus. Sebagai contoh, terdapat tabel pegawai dan dept sebagai berikut:

pegawai

Name

EmpID

DeptName

Restu

01

finance

Arif

02

sales

Priyono

03

finance

maspri

04

sales

Dept

DeptName

Manager

Finance

raden

sales

roro

production

seseorang

 

Dengan pegawai  Dept menghasilkan

 

Name

EmpID

DeptName

Manager

Restu

01

finance

raden

Arif

02

sales

roro

Priyono

03

finance

raden

maspri

04

sales

roro

 

2.1.9     Assignment

Operasi ini ditulis dengan tanda panah (¬). Operasi ini bekerja sebagaimana assignment dalam bahasa pemrograman, relasi hasil dari ekspresi di kanan operator ¬ diisikan ke variabel relasi di sebelah kiri tanda ¬. Variabel relasi ini dapat digunakan sebagai substitusi ekspresi yang di-assign kepadanya.

Dengan operasi ini, query dapat ditulis sebagai program sekuensial terdiri dari sejumlah assignment yang diikuti dengan ekspresi yang nilainya adalah hasil dari query.

2.1.10 Generalized Projection

Operasi in imemungkinkan kita untuk mengisikan fungsi-fungsi aritmatika sebagai projection list. Bentuk umum dari generalized projection memiliki bentuk umum:

ÕF1,F2,…,Fn(E)

Dimana E adalah ekspresi aljabar relasional dan masing-masing F1, F2, …, Fn adalah ekspresi aritmatika yang di dalamnya terdapat konstanta dan atribut dalam skema relasi E.

 

2.1.11 Division Operation

Operasi ini disimbolkan dengan (:), dipasangkan dengan frase ”untuk semua/for all”. Dengan operasi ini, relasi yang dibagi akan menyisakan atribut dengan nilai atribut yang persis sama dengan relasi pembaginya.

2.1.12 Aggregate Function

Aggregat function ini adalah sebuah fungsi yang nilai dari kumpulan barisnya dikelompokkan sebagai input pada beberapa kriteria untuk membentuk nilai tunggal dari arti yang signifikan, seperti sekumpulan, atau sekelompok, dsb.

Beberapa contoh aggregate function:

Average(), count(), maximum(), median(), minimum(), mode(), sum()

 

2.1.13 Outer Join

Operasi ini merupakan ekstensi dari operasi join. Operasi ini menghindari adanya informasi yang hilang, dengan menghitung join, kemudian menambahkan tuple yang tidak mendapatkan pasangan kemudian mengisiskan atribut-atribut yang tidak terdefinisi menggunakan nilai null. Sebenarnya terdapat tiga jenis outer join, yaitu:

  • Left outer join

Operasi ini mengambil semua tuple di sebelah kiri relasi. Tuple dari relasi sebelah kiri yang tidak memiliki pasangan dari relasi sebelah kanan akan diisi dengan nilai null.

  • Right outer join

Operasi ini merupakan kebalikan dari left outer join. Operasi ini mengambil semua tuple yang berada di sebelah kanan relasi yang tidak memiliki pasangan dari relasi dari relasi sebelah kiri akan diisi dengan nilai null.

  • Full outer join

Operasi ini merupakan gabungan dari kedua operasi di atas, dengan mengisikan null pada atribut yang tidak memiliki pasangan di kedua relasi, baik yang kiri maupun yang kanan.[5]

 

2.2        Kalkulus Relasional

2.2.1        Tuple Relational Calculus

Tuple relational calculus adalah sebuah bahasa query nonprocedural, dimana setiap query memiliki bentuk

{t | P(t)}

Tuple relational calculus adalah kumpulan semua tuple t sedemikian sehingga predikat P bernilai benar untuk t. T merupakan variabel tuple, t[A] merupakan singkatan dari nilai dari tuple t pada atribut A. t Î r menjelaskan bahwa tuple t berada dalam relasi r.

P merupakan sebuah rumus yang sama dengan predikat kalkulus, yang dapat merupakan kumpulan atribut dan konstanta, operator perbandingan (<, >, £, ³, ¹, =), kumpulan penghubung (Ù, Ú, Ø), implikasi (®), kumpulan quantifier.

Dalam kalkulus relasional terdapat 2 notasi yang penting, yang pertama adalah  ”terdapat beberapa (there exists)” yang ditulis:

$ t Î r (Q(t))

Yang artinya, terdapat beberapa tuple t anggota relasi r sedemikian sehingga bahwa predikat Q(t) adalah benar.

Yang kedua adalah ”untuk seluruh (for all)” yang ditulis:

” t Î r (Q(t))

Artinya, untuk seluruh tuple  anggota relasi r sedemikian sehingga bahwa predikat Q(t) adalah benar. [3]

 

2.2.2        Domain Relational Calculus

Berbeda dengan kalkulus relasional tuple, kalkulus relasional domain berorientasi kepada domain dengan menggunakan variabel-variabel domain. Bentuk dari query ini adalah

Sebuah ekspresi dalam kalkulus relasional domain berbentuk:

{<x1, x2, x3, …, xn> | P(x1, x2, x3, …, xn)}

Dimana x1, x2, x3, …, xn merepresentasikan variabel-variabel domain. P merepresentasikan sebuah formula yang terdiri dari atom-atom. Sebuah atom dalam kalkulus relasional domain dapat berupa salah satu dari bentuk berikut ini:

  • < x1, x2, . . . , xn > ∈ r, dimana r adalah relasi dengan n atribut dan x1, x2, . . . , xn adalah variabel domain atau konstanta domain.
  • x ϴ y, dimana x dan y adalah variabel domain dan ϴ adalah operator relasional (≤, <, =, ≠, >, ≥). Kita membutuhkan atribut x dan y mempunyai domain yang bisa diperbandingkan dengan ϴ.
  • x ϴ c, dimana x adalah variabel domain, ϴ adalah operator relasional, dan c adalah sebuah konstanta [3]
  1. Daftar Pustaka

[1]http://en.wikipedia.org/wiki/Relational_algebra#Rename_.28.CF.81.29

[2] http://unnes.info/teaching/database-1/operator-relasi

[3]http://rizarulham.wordpress.com/2009/10/18/pengenalan-kalkulus-relasional-tuple-dan-domain/

[4]Danar, wikan. IF2034-Operasi Aljabar Relasional. Departemen Teknik Informatika. 2010.

[5]Silberschatz, Abraham. Database System Concepts.Mc Graw Hill International Edition. Singapore. 2006

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s