Minggu, 05 Desember 2010

QUERY LANGUAGE

Query language adalah suatu bahasa yang menyediakan fasilitas bagi user untuk mengakses informasi dari basis data. Pada umumnya level bahasa ini lebih tinggi dari bahasa pemrograman standar. Bahasa query dapat dikategorikan sebagai prosedural & non-prosedural. Dalam bahsa prosedural, user menginstruksikan ke sistem agar membentuk serangkaian operasi dalam basis data untuk mengeluarkan hasil yang diinginkan. Dalam
bahasa non-prosedural, user mendeskripsikan informasi yang diinginkan tanpa memberikan prosedur detail untuk menghasilkan informasi tersebut. Sebagian besar system basis data relasional yang beredar dipasaran menawarkan bahasa query dengan pendekatan prosedural & non-prosedural. Bebrapa bahasa query yang murni adalah : aljabar relasional (relational algebra) merupakan bahasa query prosedural, sedangkan kalkulus relasional tuple (tuple relational calculus) & kalkulus relasional domain(domain relational calculus) adalah non-prosedural. Berikut hanya akan dibahas bahasa query bukan bahasa datamanipulation yang lengkap, yaitu bahasa yang tidak hanya terdiri dari bahas query tetapi juga bahasa untuk memodifikasi basis data, seperti perintah insert dan delete tuple.


Aljabar Relasional ( Relational Algebra)
Aljabar relasional adalah sebuah bahasa query prosedural yang terdiri dari sekumpulan operasi dimana masukkannya adalah satu atau dua relasi dan keluarannya adalah sebuah relasi baru sebagai hasil dari operasi tersebut. Operasi-operasi dasar dalam aljabar relasional adalah : select, project, union, set difference, Cartesian product dan rename. Disamping operasi-operasi dasar terdapat beberapa operasi lainnya seperti set intersection, natural join, division dan assignment. Operasi-operasi ini akan didefinisikan dalam terminology operasi dasar.

Operasi-operasi Dasar
Operasi-operasi select, project dan rename disebut operasi unary, karena operasioperasi tersebut hanya memerlukan satu relasi. Tiga operasi lainnya memerlukan sepasang relasi, disebut operasi binary.

Operasi Select
Operasi select menyeleksi tuple-tuple yang memenuhi predikat yang diberikan. Digunakan symbol sigma (σ) untuk menunjukkan operasi select. Predikat muncul sebagai subcript dari σ. Argumen relasi diberikan dalam kurung yang mengikuti σ. Jadi untuk menyeleksi tuple-tuple dari relasi loan dimana branch-name-nya adalah
“Perryridge”, ditulis :
σbranch-name = “Perrydge”(loan)
 Contoh-contoh query lain dengan operasi select adalah : σamount>1200(loan), untuk menemukan tuple dengan nilai amount lebih dari 1200, σbrach-name = “Perryridge” and amount >1200 (loan), untuk menemukan tuple dengan branch-name = “Perryridge” dimana nilai amountnya lebih dari 1200.

Operasi Project
Seandainya diinginkan semua daftar loan-number dan amount, tanpa branchname. Dengan operasi project dapat dihasilkan relasi ini. Operasi project disimbolkan dengan symbol phi (π). Nama-nama atribut yang diinginkan tampil ditulias sebagai subcrip π.

Contoh : πloan-number,amount(loan), adalah operasi untuk menampilkan seluruh
loan-number & amount tanpa branch-name.


Kalkulus relasional Tuple ( Tuple Relational Calculus)                                                                                  Tuple relational calculus adalah query yang non-prosedural. Tuple relational calculus menggambarkan informasi yang diinginkan tanpa memberi prosedurnya secara detil untuk mendapatkan informasi tersebut.
Sebuah query dalam tuple relational calculus ditulis :
                                                                              {t|P(t)}
yaitu : semua tuple t sedemikian sehingga predikat P adalah benar untuk t. dengan mengikuti notasi terdahulu, digunakan t[A] untuk menyatakan nilai tuple t pada atribut A, dan t∈r untuk menyatakan bahwa tuple t berada dalam relasi r.


Contoh Query : Misal diinginkan informasi branch-name, loan-number dan amount untuk pinjaman di atas $1200. Maka query-nya adalah : {t|t∈loan ∧t[amount]>1200}. Andai hanya diinginkan atribut loan-number dari relasi loan. Untuk mengekspresikan permintaan ini, diperlukan notasi “terdapatlah (there exists)” dengan notasi :
            ∃ t ∈ r (Q(t))
dibaca “ terdapatlah sebuah tuple t dalam relasi sedemikian sehingga bahwa predikat Q(t) adalah benar


Kalkulus Relasional Domain ( The Domain Relational Calculus)                                                                  

Bentuk kalkulus relasional ini menggunakan variabel domain yang mengambil sebuah nilai dari domain atribut, bukan dari nilai seluruh tuple.
Contoh query :

- Tampilkan nama cabang, loan number dan jumlah pinjaman yang lebih dari $1200, dengan kalkulus relasional domain, query-nya ditulis :
                                                {<b,l,a>|∃<b,l,a>∈ loan ∧a>1200}

- Tampilkan semua loan-number untuk jumlah pinjaman yang lebih dari $1200, dengan kalkulus relasional domain, query-nya ditulis :
                                                {<l>|∃ b,a(<b,l,a>∈ loan ∧ >1200)}

- Tampilkan nama-nama semua customer yang mempunyai pinjaman di cabang Perryridge beserta loan-number-nya.
                                                {<c,a>| ∃ (<c,l>∈ borrower ∧∃ b (<b,l,a> ∈ loan ∧ b = “Perryridge”))}

- Tampilkan nama-nama semua customer yang mempunyai pinjaman, rekening, atau keduanya pada cabang Perryridge :
     {<c>| ∃ l (<c,l>∈ borrower ∧∃ b,a   (<b,l,a> ∈ loan ∧ b = “Perryridge”))
      ∨ ∃ b,n (<b,a,n> ∈ account ∧ b = “Perryridge”))}

 - Tampilkan semua nama-nama customer yang mempunyai rekening pada semua cabang-cabang yang berlokasi di Brooklyn :
{<c>| ∀ x,y,z (<x,y,z> ∈ branch) ∧ y = “Brooklyn”⇒
∃ a,b(<x,a,b> ∈ account ∧ <c,a> ∈ depositor )}

0 komentar:

Posting Komentar

Silahkan gan komentarnya,,karena komentar anda sangat berarti bagi blog ini...Salam blogger

Jangan lupa kasih komentar nya ya gan...