Jurnal Teknik Informatika, Vol 1 September 2012
PEMBUATAN APLIKASI UNTUK MENDETEKSI
KEBENARAN PERINTAH SQL QUERY MENGGUNAKAN
METODE KNUTH-MORRIS PRATT (KMP)
Thio Wibowo1), Ardianto Wibowo2), Rika Perdana Sari3)Program Studi Teknik Informatika, Politeknik Caltex Riau Jalan Umban Sari no 1, Rumbai, Pekanbaru, Riau 28265 (E-mail: 1thio,[email protected], [email protected], [email protected])
Abstrak
Basis data lanjut (BDL) adalah salah satu mata kuliah yang ada pada jurusan komputer di Politeknik Caltex Riau. Mata kuliah ini mempelajari tentang perintah-perintah query. Perintah query ini dibuat dengan menggunakan database oracle. Permasalahan yang terjadi pada mata kuliah ini adalah kesulitan saat dosen mendeteksi kebenaran query mahasiswa dalam pelatihan perintah-perintah query, karena perintah tersebut masih dikerjakan dengan tulis tangan dan di periksa secara manual. Hal ini akan menghabiskan banyak waktu. Salah satu solusinya adalah membangun sebuah aplikasi yang mampu mendeteksi kebenaran dari suatu query secara otomatis. Aplikasi yang di bangun menggunakan metode KMP, yaitu sebuah metode yang di gunakan dalam pencocokan string. Aplikasi ini dapat memberikan bobot penilaian dari perintah query yang di masukkan berdasarkan prioritas dari kata query. Hasilnya adalah berupa nilai pembobotan masing-masing query yang dimasukkan mahasiwa pada sistem. Dibangun menggunakan bahasa pemograman web PHP dan database MySQL. Berdasarkan hasil pengujian kuisioner yang diberikan terhadap mahasiswa dan dosen pengampu pada mata kuliah ini serta pengujian terhadap metode KMP, didapatkan hasil bahwa aplikasi ini dapat membantu dosen/ staff pengajar pada mata kuliah praktikum basis data lanjut serta membantu mahasiswa dalam pembelajaran mata kuliah praktikum basis data lanjut.
Kata Kunci: Query, KMP, String, PHP, MySQL
Abstract
Basis data lanjut (BDL) is one of the existing courses in computer science at the Polytechnic Caltex Riau. This course learn about the query commands. Query command is built using oracle database. The problems that occurred on this subject is difficult to detect when a lecturer in the training of student queries righteousness the commandments of the query, because the order was still done by hand and write on the check manually. This is going to spend a lot of time. One solution is to build an application that is able to detect the correctness of a query automatically. Applications built using the KMP method, a method that is used in the matching string. This application can provide an assessment of the weight of query commands entered by the priority of the query words. The result is a weighting value of each query is entered students in the system. Built using web programming language PHP and the MySQL database. Based on the results of testing the questionnaire given to students and faculty pengampu on this course and the testing of KMP method, showed that these applications can help faculty / staff teaching on the course and lab work-up database to help students in the learning lab course basis data lanjut.
Keywords: Query, KMP, String, PHP, MySQL 1 PENDAHULUAN
1.1 Latar Belakang
Basis data lanjut (BDL) adalah sebuah mata kuliah yang ada di Politeknik Caltex Riau. Mata kuliah ini merupakan lanjutan dari mata kuliah basis data dasar. Mata kuliah basis data lanjut membahas tentang query, yaitu perintah-perintah untuk membuat, memanipulasi, dan mengontrol database yang dipakai sebagai Relational Database Management System (RDBMS). Tetapi, pengujian soal masih dilakukan secara manual dengan menggunakan tulis tangan sehingga menyulitkan staff pengajar maupun mahasiswa sebagai pihak-pihak yang terlibat
dalam mata kuliah tersebut. Seiring teknologi yang makin berkembang saat ini, mencocokkanquery yang dibuat oleh mahasiswa dengan jawaban query yang ada pada dosen tidak perlu dilakukan secara manual, tetapi dapat dilakukan melalui sebuah aplikasi berbasis web PHP yang mampu mencocokkan query yang dibuat oleh mahasiswa dengan jawaban query yang ada pada database, dimana jawaban tersebut telah dimasukkan oleh admin terlebih dahulu ke dalam database.
Hal ini yang mendasari pembuatan aplikasi pendeteksi kebenaran perintah query, karena dengan adanya aplikasi ini, suatu query tidak perlu di cek satu persatu. Selain itu, aplikasi ini juga dapat memberikan pembobotan nilai kebenaran dari query tersebut, sehingga membantu mahasiswa dalam pembelajaran mata kuliah BDL.
1.2 Perumusan Masalah
Perumusan masalah dalam proyek akhir ini adalah:
1. Bagaimana membuat sebuah aplikasi berbasis web yang dapat mencocokkan query yang diinputkan oleh mahasiswa dengan query yang tersimpan dalam database.
2. Bagaimana menerapkan metode Knuth-Morris Pratt (KMP) dalam aplikasi sebagai algoritma dalam pencocokan string.
2 Dasar Teori
2.1 Penelitian Sebelumnya
Dalam proyek akhir mahasiswa Universitas Maryland, atas nama Jimmy Lin, telah melakukan penelitian dengan judul “Brute Force and Indexed Approaches to Pairwise
Document Similarity Comparisons with MapReduce”. Rumusan masalah dari aplikasi ini adalah
mengimplementasikan metode Brute force pada aplikasi search document pada perangkat java
desktop. Aplikasi ini di gunakan untuk mencari file document dimana inputan berupa potongan
nama file.
Berikut adalah tabel yang membandingkan antara aplikasi sebelumnya dengan aplikasi sekarang:
Tabel 2. 1 Perbandingan aplikasi sebelumnya dengan aplikasi sekarang
Parameter Sebelumnya Sekarang
Inputan ke system potongan karakter nama document
String yang berisi query
Dasar pencarian Teks nama document yang tersimpan dalam database
String query yang ada di database
Berbasis Java Application Web PHP
Output File document
Persentase kebenaran query dan pencocokan query
2.2. Metode/ Algoritma Knuth-Morris Pratt (KMP) 2.2.1. Pengertian dan Cara kerja algoritma KMP
Algoritma pencocokan string (pattern) yang mempunyai kinerja bagus adalah Knuth-Morris-Pratt (KMP) danAlgoritma Boyer-Moore. Kedua algoritma ini popular digunakan pada editor teks (menu find), search engine, analisis citra, dan sebagainya. Search engine atau mesin pencari adalah program komputer yang dirancang untuk membantu seseorang menemukan file-file yang disimpan dalam komputer, misalnya dalam sebuah server umum di web (WWW) atau dalam komputer sendiri. Mesin pencari memungkinkan kita untuk meminta content media dengan kriteria yang spesifik (biasanya yang berisi kata atau frasa yang kita tentukan) dan memperoleh daftar file yang memenuhi kriteria tersebut. Mesin pencari biasanya menggunakan
indeks (yang sudah dibuat sebelumnya dan dimutakhirkan secara teratur) untuk mencari file setelah pengguna memasukkan kriteria pencarian.
Algoritma Knuth Morris Pratt (KMP) dikembangkan oleh D. E. Knuth, bersama dengan J. H. Morris dan V. R. Pratt. Untuk pencarian string dengan menggunakan algoritma Brute Force, setiap kali ditemukan ketidakcocokan pattern dengan teks, maka pattern akan digeser satu karakter ke kanan. Sedangkan pada algoritma KMP, kita memelihara inFormasi yang digunakan untuk melakukan jumlah pergeseran. Algoritma menggunakan inFormasi tersebut untuk membuat pergeseran yang lebih jauh, tidak hanya satu karakter seperti halnya pada Makalah IF3051 Strategi Algoritma – Sem. I Tahun 2010/2011 algoritma brute force. Secara sistematis, langkah-langkah yang dilakukan algoritma Knuth-Morris-Pratt pada saat mencocokkan string:
a. Algoritma Knuth-Morris-Pratt mulai mencocokkan pattern pada awal teks.Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter pattern dengan karakter di teks yang bersesuaian, sampai salah satu kondisi berikut dipenuhi:
i. Karakter di pattern dan di teks yang dibandingkan tidak cocok (mismatch).
ii. Semua karakter di pattern cocok. Kemudian algoritma akan memberitahukan penemuan di posisi ini.
b. Algoritma kemudian menggeser pattern berdasarkan tabel, lalu mengulangi langkah 2 sampai pattern berada di ujung teks.
Algoritma ini menemukan semua kemunculan dari pattern dengan panjang n di dalam teks dengan panjang m dengan kompleksitas waktu O(m+n). Algoritma ini hanya membutuhkan O(n) ruang dari memory internal jika teks dibaca dari file eksternal. Semua besaran O tersebut tidak tergantung pada besarnya ruang alphabet. Berikut contoh pencocokan pattern dengan menggunakan algoritma KMP.
2.2.2. Kelebihan Algoritma Knuth-Morris Pratt (KMP)
Pada algoritma KMP, kita memelihara inFormasi yang digunakan untuk melakukan jumlah pergeseran. Algoritma menggunakan inFormasi tersebut untuk membuat pergeseran yang lebih jauh, tidak hanya satu karakter (Sunni, 2010).
2.2.3. Fungsi Pinggiran (Border Function) Pada Metode KMP
Fungsi pinggiran b(j) didefinisikan sebagai ukuran awalan terpanjang dari P yang merupakan akhiran dari P[1..j]. Sebagai contoh, tinjau pattern P = ababaa. Nilai F untuk setiap karakter di dalam P adalah sebagai berikut:
Tabel 2. 2 Fungsi Pinggiran
J 1 2 3 4 5 6
P[j] A B a b A a
B[j] 0 0 1 2 3 1
2.3. Algoritma KMP
masukan:
sebuah array karakter, S (teks yang akan dicari) sebuah array karakter, W (kata yang dicari) output:
mendefinisikan variabel:
integer, m ← 0 (awal pertandingan saat ini dalam S) integer, i ← 0 (posisi dari karakter saat ini di W)
sebuah array bilangan bulat, T (meja, dihitung di tempat lain)
Contoh 7:
Teks : abcabcabd Pattern : abcabd
Mula-mula kita hitung fungsi pinggiran untuk pattern tersebut: Tabel 2. 3. Fungsi Pinggiran 2
J 1 2 3 4 5 6
P[j] a b c a b d
B[j] 0 0 0 1 2 0
Teks : abcabcabd
Pattern : abcabd
j = 3, j merupakan output berupa posisi karakter yang cocok
3. Perancangan dan Pembahasan
3.1 Proses Pembobotan Query dan Penilaian
Aplikasi ini lebih membantu mahasiswa memahami perintah query dan cara penanganan kesalahan yang lebih mudah dipahami serta mahasiswa juga dapat melihat bobot penilaian yang di berikan aplikasi untuk setiap perintah query yang di masukkan.
Pembobotan kata pada sebuah query berdasarkan prioritas dari kata yang di masukkan, sehingga didapat nilai akhir atau penjumlahan dari semua pembobotan kata.
Tabel 3. 1 Prioritas Kata Query
Prioritas Kata Keterangan
1 Select, from, where, insert, into, value, update, delete
Apabila salah pada satu karakter, maka pembobotan pada kata tersebut=0
2 *,Nama attribut tabel,nama tabel Pembobotan berdasarkan jumlah karakter yang cocok dengan karakter query pada database
selama m + i adalah kurang dari panjang dari S, lakukan: jika W [i] = S [m + i],
jika saya sama dengan (panjang dari W) -1, kembali m
i ← i + 1 jika tidak,
m ← m + i - T [i],
jika T [i] adalah lebih besar dari -1, i ← T [i]
lain
i ← 0
(Jika kita mencapai di sini, kita telah mencari semua S tidak berhasil) mengembalikan panjang dari S.
Terlihat seperti contoh berikut :
Tabel 3. 2. Contoh kasus pencocokkan query
Soal Tampilkan semua nama barang pada tabel barang?
Jawaban query di database select nama_barang from barang
Jawaban query user selec nama_baran from barang
Nilai user 74.01
Proses Pembobotan:
Keterangan nilai mahasiswa : penjumlahan bobot penilaian semua kata pada query
Query di atas mempunyai 4 kata x[4]-Double Linked List Circular
Bobot nilai per-karakter = 100 / jumlah karakter pada jawaban query database Bobot nilai per-karakter= 100/ 27 = 3.70
Pembobotan query:
prioritas untuk kata select, from =1
prioritas untuk kata nama_barang, barang =2
Tabel 3. 3. Proses pembobotan dan penilaian kecocokkan query
Parameter X[0] X[1] X[2] X[3]
Kata Selec nama_baran From Barang
3.2. Flowchart Algoritma KMP
Gambar 3. 1 Flowchart algoritma KMP
Gambar 3.1 merupakan penjelasan dari algoritma KMP, flowchart ini menjelaskan bagaimana metode KMP mendapatkan output yang berupa posisi karakter yang cocok. Terlihat pada gambar, metode KMP menyimpan nilai pergeseran dalam variable (i), pergeseran dilakukan sebanyak nilai (i) itu sendiri.
3.3. Flowchart Pmbobotan nilai
Gambar 3. 2 Flowchart pembobotan nilai
Pada gambar 3.2 merupakan penjelasan bagaimana aplikasi mendapatkan bobot nilai dalam pencocokkan karakter query menggunakan KMP-String Array. Pada metode ini pembobotan nilai dilakukan dengan mudah. Terlihat pada flowchart, metode ini mengumpulkan kata dalam array kemudian memeriksa kata tersebut pada tabel prioritas. Jika kata sama dengan tabel prioritas, maka kesalahan pada satu karakter dianggap salah pada kata. Jika tidak, kata tersebut akan diberi nilai sesuai dengan banyak karakter yang cocok pada kata.
4. Hasil dan Diskusi 4.1 Hasil
Gambar 4. 1 Pengujian Aplikasi bagian user
4.2 Analisa Perbandingan Metode Antara Metode String Array dan Metode KMP-Double Linked List Circular
Berdasarkan pengujian dan analisa metode KMP, dapat ditarik kesimpulan bahwa kedua metode KMP memiliki kelebihan dan kekurangan baik dalam pembobotan nilai dan pencocokkan karakter. Terlihat pada pengujian, metode KMP-LinkedList memiliki tingkat pencocokkan karakter yang lebih baik dari pada metode KMP-String array. Hal ini dikarenakan metode KMP-LinkedList melakukan pencocokkan dengan mencocokkan karakter perkarakter, sementara pada metode KMP String Array pencocokkan karakter dilakukan setelah membagi
query menjadi String array, sehingga pada metode ini karakter spasi (‘ ‘) sangat diutamakan
kebenarannya. Pengujian KMP juga memperlihatkan metode KMP String array memiliki tingkat pembobotan nilai yang lebih baik dari metode KMP-LinkedList. Hal ini disebabkan metode KMP-String array merupakan kumpulan kata sehingga memiliki kemudahan dalam menentukan prioritas suatu kata. Berbeda dengan metode KMP-LinkedList yang menggabungkan kembali query dalam bentuk susunan kata, sehingga karakter yang seharusnya karakter biasa dapat dianggap sebagai karakter yang terdapat pada kata prioritas. Tabel berikut merupakan penjelasan secara rinci dari perbandingan metode KMP:
Tabel 4. 1 Perbandingan Metode KMP
Parameter KMP – array char to string KMP – double Linked List Circular
Inputan query Inputan jawaban query tidak ada batas akhir query
Inputan jawaban dibatasi pada akhir query dengan karakter (;)
Pencocokkan query Query dicocokan berdasarkan karakter, kemudian disatukan menjadi kata
Query dicocokkan berdasarkan karakter, apabila karakter cocok, kemudian melakukan pencocokkan
terhadap next atau previous dari karakter tersebut dengan jawaban query
Pembobotan Pembobotan dilakukan setiap karakter pada kata query. Kata yang memiliki query dengan prioritas nomor satu bernilai penuh jika kata tersebut cocok dengan prioritas query, jika tidak maka kata tersebut bernilai 0
Pembobotan dilakukan setiap karakter, kemudian mengumpulkan karakter yang memiliki kecocokkan dengan kata pada prioritas query. Penilaian berdasarkan bobot perhuruf, terkecuali karakter yang memiliki kecocokkan dengan kata pada prioritas query. Akurasi penilaian Proses penilaian query memiliki
akurasi yang bagus bahkan untuk kata query yang merupakan prioritas utama.
Proses penilaian query hampir memiliki akurasi yang bagus, terkecuali untuk kata pada prioritas query.
Batas masalah Penggunaan karakter spasi sangat diperhitungkan sehingga apabila terjadi kesalahan dalam spasi, sistem tidak bisa menangani.
Penilaian pada karakter yang bukan termasuk prioritas query tidak memiliki akurasi yang bagus .
5. KESIMPULAN
Kesimpulan yang dapat diambil dari pengujian dan analisa yang telah dilakukan pada perangkat lunak adalah sebagai berikut:
1. Berdasarkan pengujian dan analisa kuisioner yang diberikan kepada user dan dosen pengampu mata kuliah basis data lanjut dapat ditarik kesimpulan bahwa pencocokan ataupun pendeteksian kebenaran perintah SQL Query pada mata kuliah praktikum basis data lanjut dapat dilakukan.
2. Berdasarkan pengujian dan analisa metode KMP dapat ditarik kesimpulan bahwa penerapan metode KMP pada pencocokan string dapat diimplementasikan.
DAFTAR PUSTAKA
[1] Cahyono, Setyo. (2006). Panduan Praktis Pemograman Database menggunakan MySQL
dan Java. Bandung: InFormatika.
[2] Daniweb. (2007). Doubly Linked List Circular. Diambil 14 Agustus 2012 dari http://www.daniweb.com/software-development/c/threads/67953/doubly-linked-circular-list
[3] Fathansyah. (2002). Basis Data. Bandung: Informatika.
[4] Haryanto, S: (t.t). Scripting World. Diambil 01 Desember 2011 dari http://www.master.web.id/scriptingworld/02-8_hal_mysql/02-8_hal_mysql.html.
[5] Heryanto, I., Raharjo, B., 2002, Memahami Konsep SQL dan PL/SQL di Oracle, Informatika, Bandung
[6] Kochhar, N., Gravina, E., Nathan, P., 1999, Introduction to Oracle 8i, Oracle Corporation
[7] PHI-Integration. (t.t). MySQL Tutorial. Di ambil 01 Desember 2011 dari http://mysql.phi-integration.com/sql/apa-itu-dml-ddl
[8] Pusdatin www admin. (t.t). Diambil 01 Desember 2011 dari http://www.deptan.go.id/pusdatin/admin/RB/Programming/Materi%20PHP.pdf
[9] Sidik, Betha (2005). MySQL. Bandung: InFormatika .
[10] Sunni, I. (8 Desember 2010). Music Finder Menggunakan Algoritma KMP Extension.
Diambil 01 Desember 2012 dari
http://www.inFormatika.org/~rinaldi/Stmik/20102011/Makalah2010/MakalahStima201
0-096.pdf
[11] Tarigan, Edi Prima (2003). Menguasai Oracle SQL . Jakarta: PT Elex Media Komputindo kelompok Gramedia.
[12] Taufik. (2009). Skala Linkert. Diambil 14 Agustus 2012 dari http://daps.bps.go.id/index.php?page=website.ViewArtikel&id=100