-->
g2QFCKwavghUp2yzjKrIFwEeG13RASCerFTCMH35

Pengertian QBE


QUERY-BY-EXAMPLE (QBE) adalah bahasa untuk query (dan, seperti SQL, untuk membuat dan memodifikasi) data relasional.Hal ini berbeda dari SQL, dan dari database lain yang paling permintaan bahasa, dalam memiliki antarmuka pengguna grafis yang memungkinkan pengguna untuk menulis pertanyaan dengan membuat tabel contoh di layar. Seorang pengguna membutuhkan informasi minimal untuk mendapatkan mulai dan bahasa seluruh berisi konsep-konsep yang relatif sedikit.   

       
QBE terutama cocok untuk permintaan yang tidak terlalu rumit dan dapat dinyatakan dalam beberapa tabel.
QBE, seperti SQL, dikembangkan di IBM dan QBE adalah merek dagang IBM, tetapi nomor
perusahaan lain menjual QBE-seperti antarmuka, termasuk Paradox. Beberapa sistem, seperti
Microsoft Access, menawarkan dukungan parsial untuk form query berbasis dan mencerminkan pengaruh dari QBE. Seringkali antarmuka QBE seperti ditawarkan selain SQL, QBE dengan menjabat sebagai lebih intuitif antarmuka pengguna untuk query sederhana dan kekuatan penuh dari SQL tersedia untuk pertanyaan lebih kompleks. Apresiasi fitur dari QBE menawarkan wawasan ke dalam paradigma yang lebih umum, dan banyak digunakan, antarmuka permintaan untuk tabel relasional database.


QUERY-BY-EXAMPLE (QBE)

A.  Definisi data lanjutan

QBE (Query-By-Example) adalah bahasa query database untuk database relasional. Sebuah parser QBE mem-parsing permintaan pencarian dan mencari kata kunci. Sebuah string query yang lebih formal, dalam bahasa seperti SQL, kemudian dihasilkan, yang akhirnya dieksekusi. Namun, jika dibandingkan dengan permintaan resmi, hasil dalam sistem QBE akan lebih variabel.

SQL (Structured Query Language) SQL adalah set-based, bahasa query deklaratif, bukan bahasa imperatif seperti C atau BASIC. Namun, ada ekstensi untuk standar SQL yang menambah fungsionalitas bahasa pemrograman prosedural, seperti kontrol-of-aliran konstruksi.

B. Struktur Dasar QBE dan Membuat relasi virtual & menggunakannya

 Seorang pengguna menulis query dengan menciptakan tabel contoh. QBE menggunakan variabel domain, seperti dalam DRC, untuk membuat tabel misalnya. Domain dari variabel ditentukan oleh kolom yang muncul, dan simbol variabel diawali dengan underscore ( ) untuk membedakan mereka dari konstanta. Konstanta, termasuk string, muncul kuotasi, dalam Berbeda dengan SQL. Field yang muncul dalam jawabannya ditentukan dengan menggunakan perintahn P.,yang merupakan singkatan cetak.           

D. QBE satu relasi  Dan QBE banyak relasi

v        QBE satu relasi 
  Bidang yang berisi perintah ini adalah analog dengan daftar target-dalam klausa SELECT dari sebuah query SQL. Kami memperkenalkan QBE melalui permintaan contoh yang melibatkan hanya satu relasi. Untuk mencetak nama dan usia dari semua pelaut, kita akan membuat tabel contoh berikut: Sebuah variabel yang muncul hanya sekali dapat dihilangkan; QBE memasok nama baru yang unik internal. Dengan demikian permintaan sebelumnya juga dapat ditulis dengan menghilangkan variabel N dan A, meninggalkan hanya P. di kolom sname dan usia. Query sesuai dengan DRC query berikut, yang diperoleh dari query QBE dengan memperkenalkan eksistensial diukur domain variabel untuk setiap bidang.
{_N,A_ | I, T(_I,N, T,A_  Sailors)}
Sebuah kelas besar hasil pencarian QBE dapat diterjemahkan ke DRC secara langsung. (Tentu saja, query yang berisi fitur seperti operator agregat tidak dapat dinyatakan di DRC.)
Kami akan menyajikan versi DRC pertanyaan QBE beberapa. Meskipun kita tidak akan menentukan intuitif, ada istilah dalam query DRC untuk setiap baris dalam query QBE, dan
hal yang terhubung menggunakan 
 .1

Sebuah notasi steno nyaman adalah bahwa jika kita ingin mencetak semua bidang dalam hubungan
tertentu, kita dapat menempatkan P. dengan nama relasi. Notasi ini adalah seperti SELECT * konvensi di SQL. Hal ini setara dengan menempatkan P. di segala bidang. Seleksi disajikan dengan menempatkan konstan dalam beberapa lapangan :
Menempatkan konstan, misalnya 10, dalam kolom adalah sama dengan menempatkan kondisi = 10. Ini query adalah sangat mirip dalam bentuk dengan permintaan DRC setara
{I, N, 10, A | I, N, 10, A Pelaut â}

Kita dapat menggunakan operasi perbandingan lain (<,>, <=,> =,  ¬) juga. Sebagai contoh, kita dapat mengatakan <10 untuk mengambil pelaut dengan rating kurang dari 10 atau  mengatakan  ¬ 10 untuk mengambil pelaut yang 
peringkat tidak sama dengan 10.  ¬ 10 ekspresi dalam kolom atribut sama dengan = 10. Seperti yang akan kita lihat segera,  ¬ bawah nama relasi menunjukkan (a terbatas bentuk) ム¬  dalam arti kalkulus relasional.

v         QBE banyak relasi
Untuk mencari pelaut dengan pemesanan sebelumnya, kita harus menggabungkan informasi dari Pelaut dan Cadangan hubungan. Secara khusus kita harus memilih tuple dari dua relasi dengan nilai yang sama dalam kolom sid bergabung. Kami melakukan ini dengan menempatkan variabel yang sama di kolom sid dari dua relasi misalnya.
Untuk mencari pelaut yang telah memesan perahu untuk 8/24/96 dan yang lebih tua dari 25, kita bisa menulis: 2 
Memperluas contoh ini, kita bisa mencoba untuk menemukan warna perahu Interlake dilindungi oleh pelaut yang telah memesan perahu untuk 8/24/96 dan yang lebih tua dari 25: 
Sebagai contoh lain, query berikut akan mencetak nama dan usia pelaut yang memiliki disediakan beberapa perahu yang juga dilindungi oleh pelaut dengan id 22: Setiap pertanyaan dalam bagian ini dapat dinyatakan di DRC. Sebagai contoh, sebelumnya permintaan dapat ditulis sebagai berikut:
{_N_ | Id, T,A,B,D1,D2(_Id,N, T,A_  Sailors
_Id,B,D1_  Reserves  _22,B,D2_  Reserves)}
Perhatikan bagaimana satu-satunya variabel bebas (N) ditangani dan bagaimana Id dan B yang berulang, sebagai dalam permintaan QBE.

D. Negation In The Relation Name Column (Negasi dalam kolom Hubungan Nama)

Kami dapat mencetak nama-nama pelaut yang tidak memiliki reservasi dengan menggunakan ( ¬ ) yang perintah di kolom nama relasi: Query ini dapat dibaca sebagai berikut: “Mencetak bidang sname dari Pelaut tupel sehingga tidak ada tuple dalam Cadangan dengan nilai yang sama di bidang sid “Catatan pentingnya.
dari sid menjadi kunci untuk Pelaut. Dalam model relasional, kunci adalah alat hanya tersedia
untuk identifikasi unik (dari pelaut, dalam kasus ini). (Pertimbangkan bagaimana arti ini
permintaan akan berubah jika skema Cadangan terkandung sname-yang bukan kunci! -
bukan sid, dan kita menggunakan variabel umum dalam kolom ini untuk mempengaruhi bergabung.)

Semua variabel dalam baris negatif (yaitu, baris yang diawali dengan ¬) juga harus muncul
dalam baris positif (yakni, baris tidak didahului oleh ¬). Secara intuitif, variabel dalam baris yang positif dapat instantiated dalam banyak hal, berdasarkan tupel dalam kasus input dari
hubungan, dan setiap baris negatif melibatkan cek sederhana untuk melihat apakah sesuai
relasi berisi tuple dengan nilai-nilai tertentu bidang tertentu.
Penggunaan ¬ pada kolom hubungan-nama memberi kita bentuk terbatas dari perbedaan set-
operator aljabar relasional. Sebagai contoh, kita dapat dengan mudah memodifikasi permintaan sebelumnya untuk menemukan pelaut yang tidak (baik) lebih muda dari 30 dan diberi nilai lebih tinggi dari 4 Mekanisme ini bukan sebagai umum sebagai set-perbedaan, karena tidak ada cara untuk mengontrol urutan kejadian (¬) dianggap jika query berisi lebih dari satu terjadinya ¬. Untuk mengambil penuh set-perbedaan, pandangan dapat digunakan. (Masalah ini QBE kelengkapan relasional, dan khususnya masalah pemesanan).
E. QBE Dengan Kondisi (THE BOX KONDISI)

Kondisi Sederhana dapat dinyatakan secara langsung dalam kolom dari tabel contoh. untuklebih kompleks kondisi QBE menyediakan fitur yang disebut kotak kondisi.
Kondisi kotak yang digunakan untuk melakukan hal berikut:
Ekspresikan suatu kondisi yang melibatkan dua atau lebih kolom, seperti R / A> 0,2.
Ekspresikan suatu kondisi yang melibatkan operasi agregat pada kelompok, misalnya,
AVG. A> 30. Perhatikan bahwa penggunaan kotak kondisi ini mirip dengan HAVING
klausa dalam SQL. Pertanyaan berikut mencetak peringkat mereka yang usia rata-rata
lebih dari 30: KONDISI BOX                                                                                                                 Sebagai contoh lain, query berikut mencetak SIDS dari pelaut yang telah memesan
semua perahu yang ada beberapa pemesanan:
Untuk setiap nilai Id (perhatikan operator G.), kita menghitung semua nilai B1 untuk mendapatkan jumlah (berbeda) tawaran nilai dilindungi oleh pelaut Id. Kami membandingkan hitungan ini terhadap jumlah dari semua nilai B2, yang hanya jumlah (berbeda) tawaran nilai dalam hubungan Cadangan (yaitu, jumlah kapal dengan reservasi).
Jika hitungan ini adalah sama, pelaut telah mencadangkan semua perahu yang ada beberapa
reservasi. Kebetulan, pertanyaan berikut, yang dimaksudkan untuk mencetak nama-nama seperti pelaut, tidak benar:
Masalahnya adalah bahwa dalam hubungannya dengan G., kolom hanya dengan baik atau G.
operasi agregat dapat dicetak. Keterbatasan ini merupakan konsekuensi langsung dari
SQL definisi GROUPBY, yang kita bahas dalam Bagian 5.5.1; QBE biasanya
diimplementasikan dengan menerjemahkan query ke dalam SQL. Jika P.G. menggantikan P. di sname yang kolom, query adalah hukum, dan kita kemudian oleh kedua kelompok sid dan sname, yang hasil di grup yang sama seperti sebelumnya karena sid adalah kunci untuk Pelaut.

  • Mengungkapkan kondisi yang melibatkan AND dan OR operator. Kami dapat mencetak nama pelaut yang lebih muda dari 20 atau lebih tua dari 30 sebagai berikut:
Kami dapat mencetak nama-nama pelaut yang baik dari yang lebih muda dari 20 dan lebih tua 30 hanya dengan mengganti kondisi dengan A <20 DAN 30 <A; tentu saja,
set pelaut tersebut selalu kosong! Kami dapat mencetak nama-nama pelaut yang
baik lebih tua dari 20 atau memiliki peringkat sama dengan 8 dengan menggunakan kondisi 20 <ATAU R = 8, dan menempatkan R variabel di kolom peringkat meja misalnya.

§        And/Or Queries

Ini adalah pelajaran untuk mempertimbangkan bagaimana query yang melibatkan AND dan OR dapat dinyatakan dalam QBE tanpa menggunakan kotak kondisi. Kami dapat mencetak nama-nama pelaut yang lebih muda dari 30 atau lebih tua dari 20 dengan hanya menciptakan dua baris misalnya:
Untuk menerjemahkan permintaan QBE dengan beberapa baris yang mengandung P., kita menciptakan subformulas untuk setiap baris dengan P. dan menghubungkan subformulas melalui â ¨. Jika baris berisi P. terkait dengan baris lain melalui variabel bersama (yang tidak terjadi di contoh ini), subformula mengandung istilah untuk setiap baris terkait, semuanya terhubung menggunakan â §. Perhatikan bagaimana variabel jawaban N, yang harus menjadi variabel bebas, ditangani:
{_N_ | 
I1,N1, T1,A1, I2,N2, T2,A2 (_I1,N1, T1,A1_  Sailors(A1 < 30  N = N1)_I2,N2, T2,A2_  Sailors(A2 > 20  N = N2))}
Untuk mencetak nama-nama pelaut yang keduanya lebih muda dari 30 dan lebih tua dari 20, kita menggunakan variabel yang sama di bidang utama dari kedua baris:
Rumus DRC untuk query ini berisi istilah untuk setiap baris terkait, dan syarat
yang terhubung menggunakan 
:
{_N_ | 
I1,N1, T1,A1,N2, T2,A2 (_I1,N1, T1,A1_  Sailors(A1 < 30  N = N1) _I1,N2, T2,A2_ Sailors(A2 > 20  N = N2))}
Bandingkan permintaan ini DRC dengan versi DRC dari permintaan sebelumnya untuk melihat bagaimana mereka terkait erat (dan seberapa dekat QBE berikut DRC).


§         Restrictions on Update Commands (Pembatasan Perintah Pembaruan)

Ada beberapa pembatasan penggunaan dari perintah I., D., dan U.. Pertama, kita
tidak dapat mencampur operator ini dalam sebuah tabel contoh tunggal (atau menggabungkan mereka dengan P.).Kedua, kita tidak bisa menentukan I., D., atau U. dalam tabel contoh yang berisi G. Ketiga, kita tidak bisa insert, update, atau memodifikasi tupel berdasarkan nilai-nilai di bidang tupel lain.

F. Operasi Agregrat

Seperti SQL, QBE mendukung operasi AVG agregat, COUNT.., MAX., MIN., Dan SUM.Secara default, operator ini agregat tidak menghilangkan duplikasi, dengan pengecualian dari COUNT, yang tidak menghilangkan duplikasi.. Untuk menghilangkan nilai ganda, varianAVG.UNQ. dan SUM.UNQ. harus digunakan. (Tentu saja, ini tidak relevan untuk MIN dan MAX..)Anehnya, tidak ada varian dari COUNT. yang tidak menghilangkan duplikasi.
Pertimbangkan contoh dari Pelaut ditunjukkan pada Gambarberikut inipermintaan mencetak nilai 38,3: Dengan demikian, nilai 35,0 dihitung dua kali dalam menghitung rata-rata. Untuk menghitung usia setiap hanya sekali, kita bisa menentukan P.AVG.UNQ. sebagai gantinya, dan kita akan mendapatkan 40,0. QBE mendukung pengelompokan, seperti pada SQL, melalui penggunaan perintah G.. untuk mencetak usia rata-rata menurut peringkat, kita bisa menggunakan:
                 Untuk mencetak jawaban dalam rangka diurutkan menurut peringkat, kita bisa menggunakan GPAO atau GPDO. sebagai gantinya. Ketika operasi agregat digunakan bersama dengan P., atau ada penggunaan G. operator, setiap kolom yang akan dicetak harus menentukan baik operasi agregat atau G. operator. (Perlu diketahui bahwa SQL memiliki batasan serupa.) Jika G. muncul di lebih dari satu kolom, hasilnya mirip dengan menempatkan masing-masing nama kolom di GROUP BY clause dari sebuah query SQL. Jika kita menempatkan G. di kolom sname dan rating, semua tuple dalam setiap kelompok memiliki nilai sname sama dan juga nilai rating yang sama. Kami mempertimbangkan beberapa contoh lainnya menggunakan operasi agregat setelah memperkenalkan kondisi kotak fitur.
Sumber :eron-unindra.blogspot.co.id
Related Posts

Related Posts

Post a Comment