## Perancangan Aplikasi Pendeteksi Kesalahan Perintah SQL Query Menggunakan Algoritma Knuth Morris Pratt
Guidio L Ginting, Dian Puspita Napitupulu, Pristiwanto
Program Studi Teknik Informatika STMIK Budi Darma, Medan, Indonesia Jl. Sisingamangaraja No. 338 Simpang Limun, Medan, Indonesia

## Abstrak
Aplikasi Database Server kini banyak dimanfaatkan oleh lembaga atau institusi untuk berbagai kepentingan. Kebanyakan dari penguna  melakukan  pendeteksian  kesalahan  pengetikan  dengan  cara  manual  sehingga  kurang  efektif.  Permasalahan  yang sering terjadi  yaitu pada penulisan atau pengetikan dikarenakan sensitifnya bahasa pemograman tersebut. Misalanya huruf besar dan kecil, titik dan koma, atau tanda baca lainnya. Selain dari masalah tersebut pengguna dari aplikasi MySQL pada umumnya menggunakan tools untuk membantu dalam pembuatan database ataupun dalam proses manipulasi sehingga struktur Query  dari  SQL  sering  dilupakan.  Algoritma  Knuth-Morris  Pratt  merupakan  algoritma  yang  digunakan  untuk  melakukan proses pencocokan string. Algoritma ini merupakan jenis Exact String Matching Algorithm yang merupakan pencocokan string secara tepat dengan susunan karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam string yang sama. Algoritma Knuth-Morris Pratt merupakan bagian dalam proses pencarian string yang memegang peranan penting untuk mendeteksi kesalahan menjadi lebih cepat dan efisien. Untuk mengetahui kesalahan pengetikan perintah SQL dengan menggunakan aplikasi pendeteksi kesalahan perintah SQL maka penugguna terlebih dahulu melakukan penginputan file SQL yang berisikan struktur database. Setelah itu pengguna juga mengetikkan Query SQL yang akan diperiksa. Melalui langkah tersebut maka dilakukan perbandingan antara Query yang diinput oleh pengguna dengan struktur SQL.
Kata Kunci : Pendeteksi, Kesalahan, SQL Query, KMP

## Abstract
Database Server applications are now widely used by institutions or institutions for various purposes. Most users detect the typing error manually so it is less effective. The problem that  often occurs is writing or typing due to the sensitivity of the programming language. For example uppercase and lowercase letters, periods and commas, or other punctuation marks. Apart from these problems users of the MySQL application generally use tools to assist in database creation or in the manipulation process so that the Query structure of SQL is often forgotten. The Knuth-Morris Pratt algorithm is an algorithm used to perform string matching processes. This algorithm  is an Exact  String Matching  Algorithm type  which is  matching strings correctly with the arrangement of characters in a matched string having the number or sequence of characters in the same string. The Knuth-Morris Pratt algorithm is part of the string search process that plays an important role in detecting errors faster and more efficiently. To find out the SQL typing error using the SQL command error detection application, the user first enters the SQL file containing the database structure. After that, the user also types in the SQL Query to be checked. Through this step, a comparison is made between the queries inputted by users with the SQL structure.
Keywords: Detectors, Errors, SQL Query, KMP

## 1. PENDAHULUAN
Aplikasi Database Server adalah sebuah mata kuliah yang ada di Management Informatika. Matakuliah tersebut mempelajari tentang MySQL . MySQL merupakan singkatan dari My Structured Query Language adalah sebuah program database server yang  mampu  menerima  dan  mengirimkan  data  dengan  sangat  cepat  serta  multi  user, sedangkan SQL adalah bahasa perintah dasar yang  ada didalamnya. SQL merupakan suatu bahasa yang digunakan untuk  mengakses database atau  disebut  juga  dengan  istilah query.  SQL dapat  digunakan  untuk  mengakses database , mengambil data dari database , menambahkan data ke database , menghapus data didalam database , dan mengubah data didalam database . Aplikasi Database Server kini  banyak  dimanfaatkan  oleh  lembaga  atau  institusi  untuk  berbagai kepentingan. Namun masih banyak pengguna dari aplikasi tersebut sulit untuk mendeteksi kesalahan pengetikan pada SQL , kebanyakan dari penguna melakukan pendeteksian kesalahan pengetikan dengan cara manual sehingga sangat tidak efektif dan kurang efisien. Permasalahan  yang sering terjadi  yaitu pada penulisan atau pengetikan dikarenakan sensitifnya bahasa pemograman tersebut. Misalanya huruf besar dan kecil, titik dan koma, atau tanda baca  lainnya. Selain  dari  masalah  tersebut  pengguna  dari  aplikasi MySQL pada  umumnya  menggunakan tools untuk membantu dalam pembuatan database ataupun dalam proses manipulasi sehingga struktur Query dari SQL sering dilupakan. Aplikasi tersebut dibangun berbasis web karena web PHP mampu mencocokkan SQL sehingga pendeteksian  kesalahan  dapat  dilakukan  lebih  mudah.  Dengan  memanfaatkan  teknologi  web  yang  dapat mendeteksi persentase kesalahan, maka tepat jika aplikasi deteksi kesalahan pengetikan SQL Query berada pada jaringan internet. Selain mudah untuk diakses, mudah pula digunakan untuk siapa saja yang memerlukan.
Permasalahan di atas yang menjadi latar belakang dan alasan utama penulis untuk mengembangkan suatu sistem yang mampu mendeteksi kesalahan pengetikan pada SQL berbasis web dengan menggunakan algoritma pencarian  pencocokan string. Adapun algoritma yang  digunakan  dalam  pencocokan  string  adalah algoritma Knuth  Morris  Pratt . Algoritma  Knuth  Morris  Pratt merupakan algoritma pencarian  hasil  pengembangan  dari
algoritma pencarian Brute  Force . Algoritma ini  memiliki  keunggulan  pencarian  kecocokan  pada  file  yang berukuran besar (Yogyawan Halim Agung, 2016).

## 2. TEORITIS

## 2.1 Pendeteksian
Deteksi  adalah  suatu  proses  untuk  memeriksa  atau  melakukan  pemeriksaan  terhadap  sesuatu  dengan menggunakan  cara  dan  teknik  tertentu.  Deteksi  dapat  digunakan    untuk    berbagai    masalah,    misalnya    dalam sistem  pendeteksi  suatu penyakit, dimana sistem mengidentifikasi masalah-masalah  yang berhubungan dengan penyakit yang biasa disebut gejala. Tujuan  dari  deteksi  adalah  memecahkan  suatu  masalah  dengan  berbagai cara tergantung metode yang diterapkan sehingga menghasilkan sebuah solusi [3].

## 2.2 String Matching
String  Matching adalah  proses  pencarian  semua  kemunculan query yang  selanjutnya  disebut pattern ke  dalam string yang lebih panjang (teks). Pattern di lambangkan dengan x=x [0…m-1] dan panjangnya adalah m. Teks di lambangkan dengan y=y [0…n-1] dan panjanganya adalah n. Kedua string terdiri dari kumpulan karakter yang disebut alfabet yang dilambangakan dengan ∑ dan mempunyai ukuran σ. String matching di bagi dua, yaitu exact matching dan heuristic matching [5][6].

## 2.3 Probabilitas Knuth Morris Pratt
Algoritma Knuth-Morris-Pratt merupakan  proses  pencocokan string .  Bila  terjadi  ketidak  cocokan  pada  saat pattern sejajar  dengan  teks  [i..i  +  n  -1].  Ketidak  cocokan  pertama  terjadi  di  antara teks [i  +  j]  dan pattern [j], dengan <j<n. Berarti, teks [i..i + j]= pattern [0..j + 1] dan a = teks [i+j] tidak sama dengan b = pattern [j], ketika di  geser,  sangat  beralasan  bila  ada  sebuah  awalan ʋ dari pattern akan  sama  dengan  sebagian  akhiran u dari sebagian teks.
Secara sistematis, langkah-langkah yang dilakukan algoritma Knuth-Morris-Pratt pada saat mencocokan string adalah sebagai berikut [5][7][8]: 1. Algoritma Knuth-Morris-Pratt mulai mencocokan pattern pada awal teks. 2. Dari kiri ke kanan, algoritma tersebut  akan  mencocokkan karakter per karakter pattern , dengan karakter di teks yang bersesuaian sampai salah satu kondisi berikut terpenuhi :
a. Karakter di pattern dan diteks yang dibandingkan tidak cocok ( mismatch ). b. Semua karakter di pattern cocok. Kemudian algoritma akan memberitahukan penemuan diposisi ini. Algoritma kemudian menggeser pattern berdasarkan table next , lalu menghitung langkah 2 sampai pattern berada di unjung teks.

## 3. ANALISA DAN PEMBAHASAN
Setiap bahasa pemograman memiliki aturan masing-masing. Seperti MySQL , setiap statement atau perintah harus  diakhiri  dengan  titik  koma.  Saat  aturan  penulisan  tidak  sesuai,  akan  terjadi error  pada  program. Kekurangan  dan  kelebihan  tanda  kutip.  Untuk  mengetahui  kesalahan  pengetikan  perintah SQL dengan menggunakan  aplikasi  pendeteksi  kesalahan  perintah SQL maka  pengguna  terlebih  dahulu  melakukan penginputan file SQL yang berisikan struktur database . Setelah itu pengguna juga mengetikkan Query SQL yang akan  diperiksa.  Melalui  langkah  tersebut  maka  dilakukan  perbandingan  antara Query  SQL yang  diinput  oleh pengguna dengan struktur SQL .
Aplikasi  pendeteksi  kesalahan  pengetikan yang  akan  dibangun  menggunakan algoritma Knuth  Morris Pratt sebagai  solusi  dalam  penyelesaian  masalah  pendeteksian  kesalahan  pengetikan.  Pada  aplikasi  tersebut penyajian kesalahan kata disesuaikan dengan yang dibuat dan disimpan didalam database . Oleh karena itu pada perancangan  aplikasi  pencaraian  atau  pendeteksian  kesalahan  dengan  menggunakan algoritma Knuth  Morrish Pratt diharapkan  dapat  menyelesaikan  permasalahan  tersebut.  Proses  pencarian  kesalahan  kata  dengan menerapkan algoritma yang digunakan, merupakan hal penting dalam pembuatan aplikasi pendeteksi kesalahan.
Sebagai Contoh : Teks = CREATE DATABASE MAHASISWA Pattern = SISWA

## Tabel 1. Pencocokan Pattern Pertama
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A S I S W A tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,

## Tabel 2. Pencocokan Pattern Kedua
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
C R E A T E D A T A B A S E M A H A S I S W A S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya, Tabel 3. Pencocokan Pattern Ketiga
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A S I S W A tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 4. Pencocokan Pattern Keempat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E M A H A S I S W A
S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,

## Tabel 5. Pencocokan Pattern Kelima
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A
S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 6. Pencocokan Pattern Keenam
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A
S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 7. Pencocokan Pattern Ketujuh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A
S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 8. Pencocokan Pattern Kedelapan
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A S I S W A tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,

## Tabel 9. Pencocokan Pattern Kesembilan
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E M A H A S I S W A
S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,

## Tabel 10. Pencocokan Pattern Kesepuluh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E M A H A S I S W A
S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,

## Tabel 11. Pencocokan Pattern Kesebelas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
C R E A T E D A T A B A S E M A H A S I S W A
S I S W A tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 12. Pencocokan Pattern Kedua Belas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 13. Pencocokan Pattern Ketiga Belas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 14. Pencocokan Pattern Keempat Belas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 15. Pencocokan Pattern Kelima Belas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 16. Pencocokan Pattern Keenam Belas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A
S I S W A
tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 17. Pencocokan Pattern Ketujuh Belas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A S I S W A tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 18. Pencocokan Pattern Kedelapan Belas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E
M A H A S I S W A S I S W A tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 19. Pencocokan Pattern Kesembilan Belas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C R E A T E D A T A B A S E M A H A S I S W A S I S W A tidak cocok, geser pattern satu langkah ke kanan menuju indeks berikutnya,
Tabel 20. Pencocokan Pattern Kedua Puluh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
C R E A T E D A T A B A S E M A H A S I S W A S I S W A
Cocok, p attern ditemukan dan pencarian berhenti di indeks ke 14.

## 4. IMPLEMENTASI
Implementasi  sistem  program  ini  mencakup  spesifikasi  kebutuhan  perangkat  keras  ( hardware )  dan  spesifikasi perangkat lunak ( software ). Hasil pengujian  program  menampilkan  hasil output dari sebuah input data pada aplikasi yang telah siap. Untuk pengujian programnya bisa di lihat sebagai berikut:
Gambar 1. Form Deteksi Kesalahan Perintah SQL Query
Gambar 1 merupakan Form deteksi kesalahan sql query merupakan form yang disediakan untuk proses pencarian database dan form penginputan perintah Query.
Gambar 2. Tampilan Hasil Deteksi
Gambar  2  merupakan  Form  hasil  deteksi  kesalahan  SQL  Query  merupakan  form  output  dari  hasil  proses pendeteksian kesalahan Query.

## 5. KESIMPULAN
Berdasarkan pembahasan dan hasil yang diperoleh maka dapat disimpulkan hal-hal berikut: 1. Pendeteksian atau pencarian kesalahan pengetikan pada SQL Query dilakukan dengan cara membandingkan struktur SQL dengan Query yang diketik.
2. Algoritma Knuth Morris Pratt dapat diterapkan untuk mendeteksi kesalahan pengetikan  SQL Query. Tetapi masih belum efektif untuk melakukan pendeteksian.
3. Berdasarkan analisa dan pengujian bahwa aplikasi cocok dirancang menggunakan bahasa pemograman PHP, dan berbasis Website.

## REFERENCES
[1] Halimah Tus Sa'diah, "Implementasi Algoritma Knuth-Morris-Pratt Pada Fungsi Pencarian Judul Tugas Akhir Repository," JURNAL KOMPUTASI, vol. 14, p. 115, January 2017.
[2] Jogiyanto, Analisis dan Desain Sistem Informasi. Yogyakarta: Andi, 2005.
[3] http://elib.unikom.ac.id/download.php?id=24997, Tanggal Akses 20 Apr.
[4] Andri Kuniyo and Kusrini, Membangun Sistem Informasi Akuntansi dengan Visual Basic & SQL Server. Yogyakarta: Andi, 2007.
[5] Riyanarto Sarno, Yeni Anistyasari, and Rahimi Fitri, Semantic Search. Yogyakarta: Andi, 2012.
[6] E. Buulolo, Implementasi Algoritma String Matching Dalam Pencarian Surat Dan Ayat Dalam Bible Berbasis Android, Pelita Inform. Budi Darma. III (2013) 23–27.
[7] J.I.  Sinaga,  Mesran,  E.  Buulolo,  APLIKASI  MOBILE  PENCARIAN  KATA  PADA  ARTI  AYAT  AL-QUR’AN  BERBASIS ANDROID MENGGUNAKAN ALGORITMA STRING MATCHING, INFOTEK. 2 (2016) 68–72.
[8] F.T.  Waruwu,  M.  Mesran,  IMPLEMENTASI  ALGORITMA  KNUTH  MORRIS  PRATT  PADA  APLIKASI  KAMUS  ISTILAH LATIN FLORA DAN FAUNA BERBASIS ANDROID, Maj. Ilm. INTI. 4 (2014) 96–102.