Você está na página 1de 10

1

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,wibowo@gmail.com, 2ardie@pcr.ac.id, 3rika@pcr.ac.id)

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

Thio Wibowo1, Ardianto Wibowo2 & Rika Perdana Sari3

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
Inputan ke system

Sebelumnya
potongan karakter nama

Sekarang
String yang berisi query

document
Dasar pencarian

Teks nama document yang

String query yang ada di

tersimpan dalam database

database

Berbasis

Java Application

Output

File document

Web PHP
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 KnuthMorris-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 filefile 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
P[j]
B[j]

1
A
0

2
B
0

3
a
1

4
b
2

2.3.Algoritma KMP
masukan:
sebuah array karakter, S (teks yang akan dicari)
sebuah array karakter, W (kata yang dicari)
output:
integer (yang berbasis-nol posisi di S di mana W adalah ditemukan)

5
A
3

6
a
1

Thio Wibowo1, Ardianto Wibowo2 & Rika Perdana Sari3

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)
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
ii+1
jika tidak,
m m + i - T [i],
jika T [i] adalah lebih besar dari -1,
i T [i]
lain
i0
(Jika kita mencapai di sini, kita telah mencari semua S tidak berhasil)
mengembalikan panjang dari S.

Contoh 7:
Teks
: abcabcabd
Pattern : abcabd
Mula-mula kita hitung fungsi pinggiran untuk pattern tersebut:
Tabel 2. 3. Fungsi Pinggiran 2
J
P[j]
B[j]

Teks
:
Pattern :

1
a
0

2
b
0

3
c
0

4
a
1

5
b
2

6
d
0

abcabcabd
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
1

Kata
Select, from, where, insert, into,
value, update, delete

Keterangan
Apabila salah pada satu karakter,
maka pembobotan pada kata
tersebut=0

*,Nama attribut tabel,nama tabel

Pembobotan berdasarkan jumlah


karakter yang cocok dengan karakter
query pada database

Terlihat seperti contoh berikut :


Tabel 3. 2. Contoh kasus pencocokkan query
Tampilkan semua nama barang pada tabel barang?

Soal

select nama_barang from barang

Jawaban query di database


Jawaban query user

selec nama_baran from barang


74.01

Nilai user

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

Nilai

5 * 0 =0

10 * 3.7 = 37

4 * 3.7 =14.81

6 * 3.7=22.2

Thio Wibowo1, Ardianto Wibowo2 & Rika Perdana Sari3

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.

Thio Wibowo1, Ardianto Wibowo2 & Rika Perdana Sari3

4. Hasil dan Diskusi


4.1 Hasil

Gambar 4. 1 Pengujian Aplikasi bagian user

4.2 Analisa Perbandingan Metode Antara Metode KMP-String Array dan Metode KMPDouble 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
Inputan query

Pencocokkan query

KMP array char to string

KMP double Linked List Circular

Inputan jawaban query tidak ada batas

Inputan jawaban dibatasi pada akhir

akhir query

query dengan karakter (;)

Query dicocokan berdasarkan karakter,

Query dicocokkan berdasarkan

kemudian disatukan menjadi kata

karakter, apabila karakter cocok,


kemudian melakukan pencocokkan

9
terhadap next atau previous dari
karakter tersebut dengan jawaban
query
Pembobotan

Pembobotan dilakukan setiap karakter

Pembobotan dilakukan setiap

pada kata query. Kata yang memiliki

karakter, kemudian mengumpulkan

query dengan prioritas nomor satu

karakter yang memiliki kecocokkan

bernilai penuh jika kata tersebut cocok

dengan kata pada prioritas query.

dengan prioritas query, jika tidak maka

Penilaian berdasarkan bobot perhuruf,

kata tersebut bernilai 0

terkecuali karakter yang memiliki


kecocokkan dengan kata
pada prioritas query.

Akurasi penilaian

Proses penilaian query memiliki

Proses penilaian query hampir

akurasi yang bagus bahkan untuk kata

memiliki akurasi yang bagus,

query yang merupakan prioritas utama.

terkecuali untuk kata pada prioritas


query.

Batas masalah

Penggunaan karakter spasi sangat

Penilaian pada karakter yang bukan

diperhitungkan sehingga apabila

termasuk prioritas query tidak

terjadi kesalahan dalam spasi, sistem

memiliki akurasi yang bagus .

tidak bisa menangani.

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.

10

Thio Wibowo1, Ardianto Wibowo2 & Rika Perdana Sari3

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-circularlist
[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

Você também pode gostar