implementasi fuzzy query pada database untuk perekomendasian

96
1 Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa OLEH : NAMA : DEDDY IRWAN NIM : 02 04020 55 DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS SUMATERA UTARA MEDAN 2008 Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Upload: phamdat

Post on 21-Jan-2017

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

1

Implementasi Fuzzy Query Pada Database Untuk

Perekomendasian Beasiswa

OLEH :

NAMA : DEDDY IRWAN

NIM : 02 04020 55

DEPARTEMEN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA

MEDAN

2008

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 2: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

2

Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa

OLEH :

NAMA : DEDDY IRWAN NIM : 02 04020 55

Tugas Akhir/ Karya Akhir ini diajukan untuk melengkapi salah satu syarat untuk memperoleh gelar Sarjana Teknik pada

DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA MEDAN

Sidang pada tanggal 24 bulan Mei tahun 2008 di depan Penguji :

1. Ir. Zahiful Bahri, M.Sc.

2. Ir. Pernantin Tarigan, M.Sc.

3. Fahmi, ST, M.Sc

: Ketua Penguji

: Anggota Penguji

: Anggota Penguji

:

:

:

Disetujui oleh :

Pembimbing Tugas Akhir

IR. T. Ahri Bahriun, M.Sc. NIP 131 456 553

Diketahui oleh : Ketua Departemen Teknik Elektro

Ir. Nasrul Abdi, MT NIP: 131 459 555

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 3: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

3

Implementasi Fuzzy Query Pada Database Untuk

Perekomendasian Beasiswa

OLEH :

NAMA : DEDDY IRWAN NIM : 02 04020 55

Tugas Akhir/ Karya Akhir ini diajukan untuk melengkapi salah satu syarat untuk memperoleh gelar Sarjana Teknik pada

DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA MEDAN

Sidang pada tanggal 26 bulan Mei tahun 2008 di depan Penguji :

1. Ir. Zahiful Bahri, M.Sc.

2. Ir. Pernantin Tarigan,

M.Sc.

3. 3. Fahmi, ST, M.Sc

: Ketua Penguji

: Anggota Penguji

: Anggota Penguji

Diketahui oleh : Ketua Departemen Teknik Elektro Ir. Nasrul Abdi, MT NIP: 131 459 555

Disetujui oleh : Pembimbing Tugas Akhir IR. T. Ahri Bahriun, M.Sc. NIP 131 456 553

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 4: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

4

ABSTRAK

Sistem database relasional yang ada sampai sekarang ini hanya mampu menangani data yang bersifat pasti (crispy), deterministik dan presisi. Padahal dalam kondisi nyata, sering sekali dibutuhkan data yang samar untuk proses pengambilan keputusan. Untuk pengambilan keputusan yang melibatkan variabel samar berdasarkan data crispy yang ada di dalam database, dapat direalisasikan dengan mengembangkan suatu aplikasi untuk menangani query yang diberikan kepada sistem database serta dengan melakukan fuzzifikasi pada data.

Pada Tugas akhir ini akan dibahas bagaimana mengimplementasikan logika fuzzy ke dalam sistem database, yaitu dengan membangun sebuah aplikasi yang melakukan proses fuzzifikasi data dan menangani query yang bernilai fuzzy. Dengan pengimplementasian sistem logika fuzzy ke dalam sistem database, query seleksi yang diberikan pada sistem database tidak akan melakukan seleksi secara tegas pada data. Tetapi akan memberikan pendekatan seleksi yang lebih menekankan pada derajat keanggotaan elemen pada himpunan yang diinginkan. Jadi walaupun tanpa mengimplementasikan sistem inferensi fuzzy (penalaran), diharapkan aplikasi ini nantinya dapat membantu dalam proses pengambilan keputusan (Decision Support System). Masalah yang diangkat dan diselesaikan adalah proses perekomendasian mahasiswa yang layak untuk mendapat beasiswa. Dimana calon mahasiswa yang akan direkomendasikan memiliki kriteria-kriteria yang bernilai fuzzy. Sedangkan data yang ada pada database bernilai pasti. Kriteria-kriteria yang dibutuhkan antara lain IPK, TOEFL, absensi dan penghasilan orang tua. Dalam pengembangan aplikasi ini dan graphical user interface-nya digunakan Java SE 6 (jdk6) dari Sun Microsystem dengan IDE NetBeans 5.5. Sedangkan untuk membangun dan manejemen databasenya menggunakan MySQL Server 5. Kata kunci : Logika Fuzzy, Fungsi Keanggotaan, Fire Strength, Database Relasional

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 5: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

5

DAFTAR ISI

ABSTRAK………………………………………………………………………...i

KATA PENGANTAR……………………………………………………………ii

DAFTAR ISI……………………………………….……………………………..iv

DAFTAR GAMBAR………………………………………………………….....vii

DAFTAR TABEL……………………………………………………………….viii

BAB I PENDAHULUAN

1.1 Latar Belakang……………............………………………….……...1

1.2 Tujuan Penulisan .…………....................…………………….……..3

1.3 Rumusan Masalah………………................…………………….…..3

1.4 Batasan Masalah…………………................………………….……4

1.5 Metodologi Penulisan……………............………………….………5

1.6 Sistematika Penulisan………………..……………………...........…7

BAB II LANDASAN TEORI………………..……………………............…...8

2.1 Logika Fuzzy ………………..……………………...........…............8

2.1.1 Himpunan Fuzzy…..……………………..........…...............9

2.1.2 Fungsi Keanggotaan.............................................................14

2.1.3 Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy......18

2.2 Database Relasional..........................................................................19

2.2.1 Entity Relationship Diagram................................................21

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 6: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

6

2.2.2 Normalisasi Database...........................................................23

2.3 Fuzzifikasi Database.........................................................................24

2.3.1 Fuzzy Query pada Database.................................................27

2.3.2 Fuzzy Extension Database....................................................28

2.4 MySQL.............................................................................................29

2.5 Bahasa Java.......................................................................................30

2.6 IDE NetBeans 5.5.............................................................................31

2.7 Java Database Connectivity (JDBC) ...............................................27

BAB III PERANCANGAN DAN PEMBANGUNAN SISTEM

3.1 Perancangan Database....................................................................34

3.1.1 Database Mahasiswa...........................................................34

3.1.2 Database Temporari............................................................34

3.1.3 Database Hasil....................................................................36

3.2 Rancangan Sistem...........................................................................36

3.2.1 Data Flow Diagram.............................................................37

3.2.2 Batasan-batasan dalam Sistem............................................41

3.2.3 Proses Perhitungan Fire Strength.......................................42

3.3 Rancangan Antarmuka....................................................................43

3.3.1 Menu Utama........................................................................43

3.3.2 Seleksi Data.........................................................................46

3.4 Koneksi Database............................................................................48

3.4.1 Registrasi Driver..................................................................48

3.4.2 Kelas Driver Manager.........................................................49

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 7: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

7

3.4.3 Interface Connection...........................................................51

3.4.4 Interface Statement.............................................................51

3.4.5 Interface ResultSet..............................................................52

BAB IV UJI COBA APLIKASI DAN ANALISA

4.1 Uji Coba Fuzzifikasi......................................................................55

4.1.1 Percobaan 1........................................................................55

4.1.2 Percobaan 2........................................................................59

4.2 Analisa...........................................................................................62

4.2.1 Analisa Percobaan 1..........................................................62

4.2.2 Analisa Percobaan 2..........................................................64

BAB V PENUTUP

4.3 Kesimpulan....................................................................................67

4.4 Saran..............................................................................................68

Daftar Pustaka

Lampiran A : Listing Program Koneksi Database

Lampiran B : Listing Program Tabel Model

Lampiran C : Listing Program Fuzzifikasi

Lampiran D : Listing Program Fungsi Keanggotaan

Lampiran E : Listing Program Fire Strength

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 8: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

8

DAFTAR GAMBAR

Gambar 2.1 Himpunan MUDA, PAROBAYA, dan TUA.................................10

Gambar 2.2 Himpunan Fuzzy untuk Variabel Umur.........................................11

Gambar 2.3 Himpunan Fuzzy untuk Variabel Temperatur................................13

Gambar 2.4 Representasi Linier Naik.........…………………………….……..14

Gambar 2.5 Representasi Linier Turun.......…………………………….……..15

Gambar 2.6 Representasi Kurva Segitiga...........................................................16

Gambar 2.7 Representasi Kurva Trapesium.......................................................16

Gambar 2.8 Representasi Kurva Bahu...............................................................17

Gambar 2.9 Fungsi Keanggotaan Fuzzy ABG..................................................28

Gambar 3.1 Struktur Tabel MAHASISWA.....................……………………..34

Gambar 3.2 Sruktur Tabel Temporari................................................................35

Gambar 3.3 Sruktur Tabel Temporari1..............................................................36

Gambar 3.4 Bagan Sistem..................................................................................37

Gambar 3.5 Konteks Diagram Sistem.....................……………………...........38

Gambar 3.6 Overview Diagram Sistem..............................................................39

Gambar 3.7 Detail Diagram Sistem ..................................................................41

Gambar 3.8 Menu Utama...................................................................................44

Gambar 3.9 Frame Update data.........................................................................45

Gambar 3.10 Fuzzy Query Data...........................................................................47

Gambar 4.1 Query Seleksi Data........................................................................58

Gambar 4.2 Query Percobaan 2………….........................................................61

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 9: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

9

DAFTAR TABEL

Tabel 2.1 Contoh Database Crispy........……………………………………27

Tabel 2.2 Contoh Fuzzy Ekstension Database……………..……….............29

Tabel 3.1 Konversi Tipe Data SQL-Java…………………………………...53

Tabel 4.1 Tabel Mahasiswa...........................................................................56

Tabel 4.2 Tabel Temporari Percobaan 1 .......................................................57

Tabel 4.3 Tabel Hasil Percobaan 1................................................................58

Tabel 4.4 Tabel Temporari Percobaan 2 .......................................................60

Tabel 4.5 Tabel Hasil Percobaan 2................................................................61

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 10: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

10

BAB I

PENDAHULUAN

1.1. Latar Belakang Masalah

Sistem database yang ada sampai sekarang ini, hanya mampu menangani data

yang bersifat pasti (crisp). Begitu pula pada query yang menggunakan bahasa

Structured Query Language (SQL), pendefinisian-pendefinisian yang diberikan

hanya mampu menangani kondisi yang sifatnya juga pasti. Dengan kondisi yang

pasti berarti struktur dan parameter dari model harus terdefinisi secara tepat.

Sedangkan dalam kondisi nyata kehidupan sehari-hari, seringkali seseorang harus

berhadapan dengan kondisi yang memiliki nilai yang samar, tidak pasti, atau ambigu.

Pada kondisi yang samar berarti tidak terdapat suatu definisi yang pasti terhadap

keadaan tersebut, sedangkan kondisi ambigu berarti suatu kondisi dimana terjadi

ketidakjelasan dari beberapa alternatif yang harus diterima, yang mana yang benar

dan yang mana yang salah.

Sebagai salah satu contoh adalah ketika hendak menentukan mahasiswa yang

layak untuk direkomendasikan mendapat beasiswa. Pada proses perekomendasian

ini, tentunya ada kriteria-kriteria yang harus dipenuhi oleh si mahasiswa. Dasar

penilaian terhadap mahasiwa calon penerima beasiswa tidak hanya dinilai dari indeks

prestasinya saja, tetapi juga harus memperhatikan tingkat kehadirannya, penghasilan

orang tuanya, dan skor TOEFL yang dimilikinya. Apabila jumlah mahasiswa yang

ada relatif sedikit, maka proses perkomendasian untuk beasiswa yang ditawarkan

tidak begitu rumit, karena pegawai atau pihak yang bersangkutan hanya menganalisa

sejumlah record data. Tetapi proses ini akan sangat menyita waktu dan tenaga

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 11: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

11

apabila data mahasiswa yang harus dianalisa cukup besar, misalnya ada ratusan

bahkan sampai ribuan record. Dalam hal ini selain masalah efisiensi, maka peluang

terjadinya kesalahan akan semakin besar apabila dilakukan secara manual.

Berdasarkan permasalah tersebut, maka perlu kiranya dirancang suatu

aplikasi yang mampu menganalisa serta merekomendasikan nama-nama mahasiswa

yang layak menerima beasiswa. Agar aplikasi ini dapat berjalan dengan baik, maka

perlu didefinisikan secara baku tentang kriteria-kriteria untuk calon penerima

beasiswa. Berdasarkan kriteria-kriteria inilah nantinya aplikasi akan mengenalisa

data-data mahasiswa yang ada. Salah satu metode yang dapat digunakan untuk

aplikasi ini adalah dengan mengimplementasikan logika fuzzy.

Dengan logika fuzzy, data akan dikelompokkan ke dalam beberapa himpunan

fuzzy sesuai dengan variabel fuzzy yang akan diolah. Sifat kelekatan data pada

himpunan fuzzy ini bersifat linier atau eksponensial, tergantung dari fungsi

keanggotaan fuzzy yang dipilih. Pada dasarnya untuk memilih mahasiswa yang layak

untuk menerima suatu beasiswa dapat saja dilakukan dengan sistem logika klasik

yang diterapkan pada server-server database yang ada sekarang ini. Namun hal ini

akan menyebabkan data diolah secara tegas, sehingga mahasiswa-mahasiswa yang

memiliki kriteria yang mendekati pendefinisian tidak akan direkomendasikan.

Diharapkan dengan ditulisnya Tugas Akhir berjudul “ Implementasi Fuzzy

Query Pada Database Untuk Perekomendasian Beasiswa ”, permasalahan-

permasalahan dalam perekomendasian beasiswa untuk mahasiswa dapat dipecahkan.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 12: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

12

1.2. Tujuan Penulisan

Adapun tujuan penulisan ini adalah untuk :

1. Menambah pengetahuan tentang penanganan database dan

interkoneksinya dengan aplikasi berbasis Java.

2. Memahami metode pengimplementasian logika fuzzy ke dalam

database (fuzzifikasi database).

3. Membuat suatu perangkat lunak yang dapat melakukan proses seleksi

dalam memilih mahasiswa yang layak direkomendasikan untuk

menerima beasiswa.

4. Memenuhi salah satu syarat untuk menyelesaikan pendidikan program

sarjana Teknik Elektro di Universitas Sumatera Utara.

1.3. Rumusan Masalah

Dalam pengembangan sistem untuk perekomendasian beasiswa ini, database

mahasiwa dibangun dengan menggunakan MySQL Server 5. Data-data yang

disimpan di dalam sistem database ini adalah data-data yang bersifat crisp, sehingga

hal pertama yang harus dilakukan adalah memfuzzifikasi data-data tersebut. Untuk

proses fuzzifikasi data dan tampilan bagi pengguna dibangun dengan menggunakan

bahasa program Java dengan acuan Java Standard Edition versi 6.0 (Mustang). Untuk

proses fuzzifikasi ada beberapa tahapan yang harus dilakukan, yaitu menentukan

fungsi keanggotaan, menentukan himpunan fuzzy, dan menentukan domain untuk

masing-masing himpunan.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 13: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

13

MySQL dan JDK 6.0 adalah dua aplikasi yang berbeda, jadi untuk

menjembatani interkoneksi diantara kedua aplikasi ini harus mengunakan driver yang

tepat. Selain itu, tipe data pada MySQL dan Java juga berbeda, jadi harus dilakukan

konversi tipe data yang benar agar data-data yang disimpan dalam database dapat

diakses dan diproses oleh Java. Untuk memanipulasi data pada sistem database dari

aplikasi berbasis Java juga harus dilakukan dengan membuat sebuah obyek dan kelas

untuk menjalankan query dan menampung nilai.

Proses selanjutnya setelah fuzzifikasi adalah perhitungan fire strength untuk

masing-masing variabel dan himpunan fuzzy, dari proses inilah nantinya sistem akan

memberikan nilai derajat perekomendasian bagi mahasiswa untuk penerimaan

beasiswa.

1.4. Batasan Masalah

Berdasarkan kompleksitas masalah pada pengimplementasian logika fuzzy ke

dalam sistem database, maka penulis perlu membatasi masalah yang akan dibahas.

Adapun batasan-batasan masalah dalam Tugas Akhir ini adalah :

1. Query yang dilakukan tidak menangani data dari tabel yang berbeda.

2. Variabel-variabel penilaian dibatasi hanya pada besaran IPK,TOEFL,

absensi, dan gaji orang tua.

3. Ukuran database tidak terlalu besar, hanya sebatas simulasi perangkat

lunak saja.

4. Aplikasi logika fuzzy yang dirancang ini tidak memakai pembobotan

nilai pada suatu variabel atau himpunan.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 14: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

14

1.5. Metodelogi Penulisan

Metodelogi dalam penulisan tugas akhir ini terdiri dari beberapa tahapan,

yaitu :

1. Perancangan Database

Pada tahap ini dilakukan pembangunan database yang terdiri dari 3

database, yaitu database mahasiswa, temporari, dan hasil. Database

mahasiswa berisikan data-data mahasiswa, database temporari adalah

database yang akan menyimpan nilai-nilai derajat keanggotaan masing-

masing mahasiswa untuk himpunan fuzzy yang didefinisikan

pengguna. Sedangkan database hasil adalah database yang menyimpan

nilai derajat perekomendasian hasil perhitungan fire strength dari nilai-

nilai yang ada di dalam database temporari.

2. Perancangan Sistem

Pada tahap ini dilakukan perancangan sistem yang akan dibangun,

meliputi disain user interface, fitur-fitur yang disediakan aplikasi,

penanganan koneksi dengan sistem database, dan keterbatasan sistem.

3. Fuzzifikasi Data

Pada tahapan ini aplikasi yang dibangun akan melakukan koneksi

dengan sistem database, melakukan pengaksesan data dan mengambil

data tersebut untuk difuzzifikasi. Yaitu dengan melakukan perhitungan

nilai derajat keanggotaan sesuai dengan fungsi keanggotaan dan

himpunan fuzzy yang didefinisikan pengguna. Kemudian aplikasi akan

mengembalikan nilai perhitungan derajat keanggotaan tersebut ke

dalam sistem database.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 15: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

15

4. Perhitungan Fire Strength

Nilai derajat keanggotaan yang dikembalikan oleh aplikasi ke dalam

sistem database dikelompokkan menjadi 4 varibel fuzzy yaitu IPK,

TOEFL, ABSENSI, dan GAJI_ORTU. Kemudian nilai-nilai ini akan

dikombinasikan dan dimanipulasi dengan operator Zadeh untuk

mendapatkan nilai fire strength, yaitu nilai yang dijadikan sebagai nilai

derajat perekomendasian mahasiswa dalam penerimaan beasiswa.

Semakin tinggi nilainya, maka derajat perekomendasiannya juga

semakin besar.

5. Pengujian Sistem

Pada tahapan ini dilakukan percobaan terhadap aplikasi yang telah

dibangun, yaitu dengan melakukan dua kali percobaan. Percobaan

pertama dilakukan tanpa mengubah nilai domain himpunan serta

dengan menggunakan operator OR pada masing-masing variabel fuzzy.

Sedangkan pada percobaan kedua dilakukan dengan mengubah nilai

domain masing-masing himpunan serta melakukan operasi dengan

mengkombinasikan operator AND dan OR.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 16: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

16

1.6. Sistematika Penulisan

BAB I : PENDAHULUAN

Bab ini berisi latar belakang, tujuan penulisan, rumusan

permasalahan, batasan masalah, metodologi penulisan, serta

sistematika penulisan.

BAB II : LANDASAN TEORI

Bab ini membahas tentang teori-teori pendukung dalam

pembuatan aplikasi ini, yaitu teori mengenai logika fuzzy,

database relasional, dan konsep tentang fuzzifikasi database.

Selain itu pada bab ini juga dipaparkan secara ringkas mengenai

tools pengembangan aplikasi, yaitu Java (JDK 6.0), MySQL

Server 5, dan IDE NetBeans 5.5.

BAB III : PERANCANGAN DAN PEMBANGUNAN APLIKASI

Bab ini membahas tentang perancangan dan pembangunan

aplikasi, mencakup perancangan database, perancangan sistem,

programming, serta GUI (Graphical User Interface ).

BAB IV : UJI COBA DAN ANALISA

Pada bab ini diuraikan mengenai uji coba pada aplikasi yang telah

dibuat serta melakukan analisa terhadap hasil yang diperoleh.

BAB V : PENUTUP

Dalam bab penutup ini, berisi kesimpulan dari hasil yang telah

dikerjakan berdasarkan uji coba dan analisa yang dilakukan.

Selain itu , juga berisi saran serta petunjuk pengembangan bagi

penyempurnaan proyek Tugas Akhir ini.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 17: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

17

BAB II

LANDASAN TEORI

2.8 Logika Fuzzy

Sistem fuzzy dicetuskan oleh Lotfi A. Zadeh pada tahun 1960, konsep ini

pada dasarnya berhubungan dengan bagaimana manusia menangani ketidakpastian

(imprecise) dan informasi yang tidak pasti (uncertain). Zadeh menirukan bagaimana

manusia menggunakan perkiraan dan pertimbangan (approximate reasoning) dalam

hal yang berhubungan dengan ketidakpastian, ketidaktepatan, kerancuan (ambiguity),

dan ketidakjelasan (vagueness) yang dialami dalam pengambilan keputusan. Logika

fuzzy adalah superset (bagian yang melingkupi) logika bolean yang dikembangkan

untuk menangani suatu komponen atau informasi secara keseluruhan. Konsep logika

fuzzy ini dikembangkan karena beberapa alasan, yang diantaranya adalah :

1. Keanggotaan suatu elemen terhadap suatu himpunan menjadi “fuzzy”

atau “samar”. Dalam hal ini, ada elemen yang posisinya sebagai

anggota atau bukan anggota dari suatu himpunan tidak diketahui

dengan pasti.

2. Keanggotaan elemen dalam suatu himpunan pasti sangat curam dan

mempuyai batasan yang kaku.

Penilaian yang dilakukan dengan logika klasik hanya mungkinkan untuk

mengolah informasi yang benar atau salah. Logika ini tidak mampu menangani

informasi yang tidak pasti, walaupun di dalam informasi tersebut ada data yang

tersimpan. Dalam logika klasik, keanggotaan suatu elemen dalam himpunan

dipresentasikan dengan 0 bila bukan anggota dan 1 bila merupakan anggota. Jadi

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 18: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

18

himpunannya adalah {0,1}. Sedangkan pada logika fuzzy nilai kenggotaan ada pada

interval [0,1]. Jadi pada dasarnya sistem fuzzy merupakan gagasan aproksimasi yang

didasarkan pada gagasan eksak.

2.8.1 Himpunan Fuzzy

Himpunan fuzzy secara formal dapat didefinisikan seperti pada Persamaan

2.1 berikut :

}]1,0[)(,:/)({ ℜ∈∈∈= xXxxxA AA µµ ………....(2.1)

Dimana )(xAµ adalah derajat keanggotaan elemen x pada himpunan fuzzy A dengan

cakupan nilai keanggotaan antara 0 dan 1 yang merupakan anggota bilangan real.

Dimana bila )(xAµ = 0, mengindikasikan bahwa x bukan bagian dari himpunan

fuzzy A dan sebaliknya jika )(xAµ = 1, maka x adalah bagian dari himpunan fuzzy

A. Secara umum, himpunan fuzzy A dapat dianggap sebagai fungsi )(xAµ yang

mencocokkan setiap elemen dari semesta pembicaraan X dengan derajat keanggotaan

menjadi anggota himpunan A. Jika fungsi keanggotaan hanya menghasilkan nilai

keanggotaan {0,1}, maka hasilnya bukanlah fuzzy melainkan tegas (crisp).

Pada himpunan tegas (crisp) nilai keanggotaan suatu item x dalam suatu

himpunan A, yang sering ditulis dengan )(xAµ , hanya memiliki 2

kemungkinan yaitu 0 dan 1. Sebagai contoh, misalkan variabel umur dibagi menjadi

3 kategori, yaitu:

• MUDA umur < 35 tahun

• PAROBAYA 35 � umur � 55 tahun

• TUA umur � 55 tahun

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 19: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

19

Nilai keanggotaan secara grafis, himpunan MUDA, PAROBAYA, dan TUA ini

dapat dilihat pada Gambar 2.1.

Gambar 2.1 Himpunan MUDA, PAROBAYA, dan TUA.

Pada Gambar 2.1, dapat dilihat bahwa:

1. Apabila seseorang berusia 34 tahun, maka ia dikatakan MUDA

(�MUDA[34] = 1);

2. Apabila seseorang berusia 35 tahun, maka ia dikatakan TIDAK MUDA

�MUDA[35] = 0);

3. Apabila seseorang berusia 35 tahun kurang 1 hari, maka ia dikatakan

TIDAK PAROBAYA (�PAROBAYA[35 th – 1 hari] = 0).

Berdasarkan contoh diatas bisa dikatakan pemakaian himpunan crisp

untuk menyatakan umur sangat tidak adil, adanya perubahan sedikit saja pada

nilai elemen mengakibatkan perbedaan kategori yang cukup signifikan. Himpunan

fuzzy digunakan untuk mengantisipasi hal tersebut. Seseorang dapat masuk

dalam 2 himpunan yang berbeda, MUDA dan PAROBAYA, PAROBAYA dan

TUA, dsb. Seberapa besar eksistensi elemen yang ditinjau dalam himpunan

tersebut dapat ditentukan dan diukur dengan nilai derajat keanggotaannya.

Gambar 2.2 menunjukkan himpunan fuzzy untuk variabel umur.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 20: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

20

Gambar 2.2 Himpunan Fuzzy untuk Variabel Umur

Pada Gambar 2.2, dapat dilihat bahwa:

1. Seseorang yang berumur 40 tahun, termasuk dalam himpunan MUDA

dengan �MUDA[40]=0,25; namun dia juga termasuk dalam himpunan

PAROBAYA dengan �PAROBAYA[40]=0,5.

2. Seseorang yang berumur 50 tahun, termasuk dalam himpunan MUDA

dengan �TUA[40]=0,25; namun dia juga termasuk dalam himpunan

PAROBAYA dengan �PAROBAYA[50]=0,5.

Kalau dalam himpunan crisp nilai keanggotaannya hanya ada 2 kemungkinan,

yaitu 0 atau 1. Sedangkan pada himpunan fuzzy nilai keanggotaan terletak pada

rentang 0 sampai 1. Apabila x memiliki nilai keanggotaan fuzzy �A[x]=0 berarti x

tidak menjadi anggota himpunan A, demikian pula apabila x memiliki nilai

keanggotaan fuzzy �A[x]=1 berarti x menjadi anggota penuh pada himpunan A.

Terkadang kemiripan antara keanggotaan fuzzy dengan probabilitas

menimbulkan kerancuan. Keduanya memiliki nilai pada interval [0,1], namun

interpretasi nilainya sangat berbeda. Keanggotaan fuzzy memberikan suatu ukuran

terhadap pendapat atau keputusan, sedangkan probabilitas mengindikasikan proporsi

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 21: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

21

terhadap keseringan suatu hasil bernilai benar dalam jangka panjang (tinjauan).

Misalnya, jika nilai keanggotaan suatu himpunan fuzzy MUDA adalah 0,9; maka

tidak perlu dipermasalahkan berapa seringnya nilai itu diulang secara individual

untuk mengharapkan suatu hasil yang hampir pasti MUDA. Di lain pihak, nilai

probabilitas 0,9 MUDA berarti 10% dari himpunan tersebut diharapkan tidak

MUDA.

Himpunan fuzzy memiliki 2 atribut, yaitu :

1. Linguistik, yaitu penamaan suatu grup yang mewakili suatu keadaan atau

kondisi tertentu dengan menggunakan bahasa alami, seperti : MUDA,

PAROBAYA, dan TUA

2. Numeris, yaitu suatu nilai (angka) yang menunjukkan ukuran dari suatu

variabel seperti : 40, 25, 50, dan sebagainya.

Ada beberapa hal yang perlu diketahui dalam memahami sistem fuzzy, yaitu :

1. Variabel Fuzzy

Variabel fuzzy merupakan variabel yang hendak dibahas dalam suatu sistem

fuzzy. Contoh : umur, temperatur, permintaan, dan lain-lain.

2. Himpunan Fuzzy

Himpunan fuzzy merupakan suatu grup yang mewakili suatu kondisi atau

keadaan tertentu dalam suatu variabel fuzzy.

Contoh :

Variabel temperatur terbagi menjadi 5 himpunan fuzzy, yaitu : DINGIN,

SEJUK, NORMAL, HANGAT, dan PANAS. (Gambar 2.3)

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 22: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

22

Gambar 2.3 Himpunan Fuzzy pada Variabel Temperatur

3. Semesta Pembicaraan

Semesta pembicaraan adalah keseluruhan nilai yang diperbolehkan untuk

dioperasikan dalam suatu variabel fuzzy. Semesta pembicaraan merupakan

himpunan bilangan real yang senantiasa naik (bertambah) secara monoton

dari kiri ke kanan atau sebaliknya. Nilai semesta pembicaran dapat berupa

bilangan positif maupun negatif. Contoh semesta pembicaan :

• Semesta pembicaraan untuk variabel umur : [0 +�]

• Semesta pembicaraan untuk variabel temperature : [0 40]

4. Domain

Domain himpunan fuzzy adalah keseluruhan nilai yang diizinkan dan boleh

dioperasikan dalam suatu himpunan fuzzy. Seperti halnya semesta

pembicaraan, domain merupakan himpunan bilangan real yang senantiasa

naik (bertambah) secara monoton dari kiri ke kanan. Nilai domain dapat

berupa bilangan positif maupun negative. Contoh domain himpunan fuzzy:

• MUDA = [0 35]

• PAROBAYA = [35 55]

• TUA = [55 +�]

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 23: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

23

2.8.2 Fungsi Keanggotaan

Fungsi keanggotaan (membership function) adalah suatu kurva yang

menunjukkan pemetaan titik-titik input data ke dalam nilai keanggotaannya

(sering juga disebut dengan derajat keanggotaan) yang memiliki interval antara 0

sampai 1. Salah satu cara yang dapat digunakan untuk mendapatkan nilai

keanggotaan adalah dengan melalui pendekatan fungsi. Ada beberapa fungsi yang

dapat digunakan.

a. Representasi Linear

Pada representasi linear, pemetaan data input digambarkan sebagai

suatu garis lurus ke derajat keanggotaannya. Bentuk ini paling sederhana dan

menjadi pilihan yang baik untuk pendekatan suatu konsep yang kurang jelas.

Ada 2 keadaan himpunan fuzzy linear, yaitu:

1. Representasi Linear Naik

Kenaikan himpunan dimulai pada nilai domain yang memiliki derajat

keanggotaan nol (0) bergerak ke kanan menuju ke nilai domain yang

memiliki derajat keanggotaan lebih tinggi (Gambar2.4).

Gambar 2.4 Representasi Linier Naik

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 24: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

24

Persamaan fungsi keanggotaannya seperti terlihat pada Persamaan 2.2

berikut ini :

��

���

≤≤−−

bxajikaabax

axjikax

);/()(

;0][µ ………...(2.2)

2. Representasi Linear Turun

Representasi linear turun merupakan kebalikan dari linear naik. Garis

lurus dimulai dari nilai domain dengan derajat keanggotaan

tertinggi pada sisi kiri, kemudian bergerak menurun ke nilai domain yang

memiliki derajat keanggotaan lebih rendah (Gambar 2.5).

Gambar 2.5 Representasi Linier Turun

Persamaan fungsi keanggotaannya seperti terlihat pada Persamaan 2.3

berikut ini :

{ bxajikaabxbx ≤≤−− );/()(][µ …………….(2.3)

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 25: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

25

b. Representasi Kurva Segitiga

Kurva segitiga pada dasarnya merupakan gabungan antara 2 garis linear

seperti terlihat pada Gambar 2.6.

Gambar 2.6 Representasi Kurva Segitiga

Persamaan fungsi keanggotaannya seperti pada Persamaan 2.4 berikut ini

:��

��

≤≤−−≤≤−−

≥≤

cxbbcxcbxaabax

cxatauax

x);/()();/()(

;0][µ ……………(2.4)

c. Representasi Kurva Trapesium

Kurva trapesium pada dasarnya seperti bentuk segitiga, hanya saja ada

beberapa titik yang memiliki nilai keanggotaan 1 seperti terlihat pada Gambar 2.7.

Gambar 2.7 Representasi Kurva Trapesium

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 26: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

26

Persamaan fungsi keanggotaannya seperti pada Persamaan 2.5 berikut ini :

��

��

≤≤−−≤≤

≤≤−−

≥≤

dxccdxdcxb

bxaabax

dxatauax

x

);/()(;1

);/()(

;0

][µ …………….(2.5)

d. Representasi Kurva Bahu

Representasi fungsi keanggotaan fuzzy dengan menggunakan kurva bahu

pada dasarnya adalah gabungan dari kurva segitiga dan kurva trapesium. Daerah

yang terletak di tengah-tengah kurva bahu ini, direpresentasikan dengan fungsi

keanggotaan segitiga, pada sisi kiri dan kanannya nilai keanggotan akan naik dan

turun. Tetapi terkadang pada salah sisi dari variabel fuzzy yang ditinjau ini terdapat

nilai yang konstan, yaitu pada himpunan ekstrim kiri dan ekstrim kanan. Hal ini

dapat dilihat pada Gambar 2.8.

Gambar 2.8 Representasi Kurva Bahu

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 27: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

27

2.8.3 Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy

Ada beberapa operasi yang didefinisikan secara khusus untuk

mengkombinasi dan memodifikasi himpunan fuzzy. Nilai keanggotaan sebagai

hasil dari operasi 2 himpunan sering dikenal dengan nama fire strength atau

�-predikat. Ada 3 operator dasar yang dicptakan oleh Zadeh, yaitu:

1. Operator AND

Operator ini berhubungan dengan operasi interseksi pada himpunan. �-

predikat sebagai hasil operasi dengan operator AND diperoleh dengan

mengambil nilai keanggotaan terkecil antar elemen pada himpunan-

himpunan yang bersangkutan. Persamaan nilai keanggotaannya terlihat pada

Persamaan 2.6 berikut ini :

�A�B = min(�A[x], �B[y]) …………(2.6)

2. Operator OR

Operator ini berhubungan dengan operasi union pada himpunan. �-

predikat sebagai hasil operasi dengan operator OR diperoleh dengan

mengambil nilai keanggotaan terbesar antar elemen pada himpunan-

himpunan yang bersangkutan. Persamaan nilai keanggotaannya terlihat pada

Persamaan 2.7 berikut ini :

�AUB = max(�A[x], �B[y]) …………(2.7)

3. Operator NOT

Operator ini berhubungan dengan operasi komplemen pada himpunan. �-

predikat sebagai hasil operasi dengan operator NOT diperoleh dengan

mengurangkan nilai keanggotaan elemen pada himpunan yang

bersangkutan dari 1. Persamaan nilai keanggotaannya terlihat pada Persamaan

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 28: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

28

2.8 berikut ini :

�A’ = 1-�A[x] ..……………(2.8)

Contoh :

Misalkan nilai keanggotaan 27 tahun pada himpunan MUDA adalah

0,6 (�MUDA [27]=0,6); dan nilai keanggotaan Rp. 2.000.000 pada himpunan

pengahasilan TINGGI adalah 0,8 (�GAJITINGGI[2 x 106 ]=0,8); maka :

1. Nilai �-predikat untuk usia MUDA dan berpenghasilan TINGGI adalah :

�MUDA�GAJITINGGI = min(�MUDA [27], �GAJITINGGI[2 x 106 ] )

= min(0,6;0,8)

= 0,6

2. Nilai �-predikat untuk usia MUDA atau berpenghasilan TINGGI adalah

:�MUDAUGAJITINGGI = max(�MUDA [27], �GAJITINGGI[2 x 106 ] )

= max(0,6;0,8)

= 0,8

3. Nilai �-predikat untuk usia TIDAK MUDA adalah :

�MUDA = 1- �MUDA [27]

= 1- 0,6

= 0,4

2.9 Database Relasional

Database adalah kumpulan data yang terstruktur. Data sendiri merupakan

fakta mengenai obyek yang dinyatakan dengan nilai (angka, deretan karakter, atau

simbol). Database bertujuan untuk mengatur data sehingga diperoleh kemudahan,

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 29: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

29

ketepatan, dan kecepatan dalam mengambil kembali data. Database dapat

didefinisikan dalam berbagai sudut pandang, diantaranya adalah seperti berikut :

1. Himpunan kelompok data yang saling berhubungan dan terorganisasi

sedemikian rupa sehingga kelak dapat dimanfaatkan dengan cepat dan

mudah.

2. Kumpulan data yang saling berhubungan, disimpan secara bersamaan

sedemikian rupa tanpa pengulangan (redudancy) untuk memenuhi

kebutuhan.

3. kumpulan file/ tabel/ arsip yang saling berhubungan serta disimpan

dalam media penyimpan elektronik.

Sistem database yang terorganisir dengan baik dan handal, merupakan

perpaduan antara data, perangkat keras (hardware), sistem operasi, database

management system (DBMS), dan user. Salah satu model database yang umum dan

sering dipakai karena kehandalan dan kelebihan-kelebihannya adalah relational

database model (model database relasional)

Konsep database relasional pertama kali diperkenalkan oleh E.F. Codd pada

tahun 1970-an dalam sebuah artikel yang ditulisnya dengan judul “Association of

Computer for Large Shared Data Banks”. Model relasional merupakan kumpulan

dari tabel yang dipakai untuk merepresentasikan relasi diantara data, dimana tabel-

tabel tersebut tersusun dengan suatu aturan logis. Di dalam konsep relasional,

database mempunyai suatu struktur yang menggambarkan keterkaitan (integritas)

diantara elemen-elemen penyusun database. Integritas data tersebut dipertahankan

oleh sebuah komponen yang dinamakan kunci (key), yang dalam implementasinya

key ini mempunyai penjabaran dan tipe lebih lanjut.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 30: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

30

Dalam pengembangan sistem database dengan model relasional ada dua hal

yang menjadi acauan dalam pelaksanaannya, yaitu :

1. Entity Relationship Diagram (ERD)

2. Normalisasi Database

2.9.1 Entity Relationship Diagram (ERD)

Untuk memudahkan pendeskripsian relasi diantara elemen-elemen peyusun

database, cara yang sering dipakai adalah dengan menggunakan entity relationship

diagram (ERD). Dengan metode ini pengembang dapat lebih mudah dalam

merancang sistem database serta relasi diantara entity-entity penyusun database

dapat digambarkan dengan lebih jelas kepada pengguna.

Terdapat tiga notasi dasar yang bekerja pada model E-R, yaitu : entity,

relationship, dan attribute. Sebuah entity adalah sebuah benda atau obyek di dunia

nyata yang dapat dibedakan dari semua obyek lainnya. Entity set adalah sekumpulan

entity yang mempuyai tipe yang sama. Entity set dilambangkan dengan bentuk

persegi panjang. Relationship adalah hubungan diantara beberapa entity dan

dilambangkan dengan bentuk diamond (ketupat). Sedangkan attribute merupakan

istilah yang dipakai untuk menyatakan atau mengelompokkan suatu entity. Attibute

dalam ERD dilambangkan dengan bentuk elips.

Ada beberapa istilah yang harus difahami sebelum merancang database

dengan model entity relationship diagram ini, diantaranya adalah :

1. Super Key

Satu atau lebih atribut (kumpulan atribut) yang dapat membedakan

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 31: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

31

setiap baris data dalam tabel secara unik, di mana tidak mungkin terjadi

pengulangan atau nilai yang sama dibaris berikutnya.

2. Kandidat Key

Kumpulan atribut minimal yang membedakan setiap baris data dalam

tabel secara unik. Untuk bisa menjadi kandidat key, suatu atribut harus

memenuhi persyaratan sebagai berikut :

a. Untuk satu nilai hanya mengindentifiasikan satu baris dalam satu

relasi (unik).

b. Tidak memiliki subset yang juga merupakan primary key.

c. Tidak dapat bernilai null.

3. Primary Key

Nilai dari primary key harus mengidentifikasikan sebuah baris secara

unik di dalam suatu relasi. Primary key boleh terdiri dari satu atau lebih

atribut relasi dengan syarat harus memenuhi persyaratan sebagai

kandidat key.

4. Alternatif Key

Adalah kunci yang tidak ada di dunia nyata, tetapi diadakan dan

dijadikan primary key. Kunci ini dibuat ketika tidak ada satupun atribut

dalam sebuah relasi yang bisa mewakili relasi tersebut atau kandidat key

yang ada tidak efektif untuk digunakan.

5. Koposit Key

Primary key yang terdiri lebih dari satu kunci.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 32: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

32

6. Foreign Key(FK)

Kunci ini bukan merupakan kunci dari tabel yang diacu melainkan

kunci dari tabel lain.

7. Kardinalitas Pemetaan

Kardinalitas pemetan atau rasio kardinalitas menunjukkan jumlah entity

yang dihubungkan ke satu entity lain dengan suatu relationship set

.

2.9.2 Normalisasi Database

Salah satu tofik yang cukup kompleks dalam dunia manajemen database

relasional adalah proses untuk menormalisasi tabel-tabel dalam database. Alasan

utama melakukan normalisasi adalah untuk membentuk database yang efektif,

efisien, dan handal. Untuk menghilangkan insertion anomalies, deletion anomalies,

dan update anomalies, normalisasi yang harus dilakukan minimal sampai tahapan

ketiga. Normalisasi merupakan pendekatan dalam membangun struktur logika

database relasional yang secara langsung berkaitan dengan kinerja database. Dalam

membangun struktur logika data, dapat dilakukan dengan langsung menggunakan

prinsip-prinsip normalisasi atau melakukan transformasi dari model E-R ke dalam

bentuk tabel.

Dalam perspektif normalisasi sebuah database dikatakan baik jika setiap tabel

yang membentuk database tersebut sudah dalam keadaan normal. Suatu tabel

dikatakan normal jika memenuhi kriteria sebagai berikut :

1. Jika ada dekomposisi/ penguraian tabel, maka dekomposisinya dijamin

aman (lossless-join decomposition).

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 33: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

33

2. Terpeliharanya ketergantungan fungsional (functional dependency) pada

saat perubahan data.

3. Tidak melanggar Boyce Code Normal Form (BCNF), jika tidak

memungkinkan minimal tidak melanggar sampai bentuk normal ketiga.

Tahapan-tahapan dalam melakukan normalisasi terhadap database adalah :

1. Bentuk normal pertama (1st normal form)

Sebuah tabel dikatakan 1NF jika tidak ada duplikasi baris dalam tabel

dan masing-masing cell bernilai tunggal. Kemudian semua atribut yang

ada harus bergantung pada primary key.

2. Bentuk normal kedua (2nd normal form)

Bentuk normal kedua terpenuhi jika pada sebuah tabel semua atribut

yang tidak termasuk primary key memiliki ketergantungan fungsional

terhadap primary key secara utuh, tidak ada ketergantungan parsial.

3. Bentuk normal ketiga (3rd normal form)

Sebuah tabel dikatakan memenuhi bentuk normal ketiga (3NF) jika

tidak terdapat ketergantungan transitif, dimana atribut bukan kunci tidak

boleh bergantung pada atribut lainnya.

2.10 Fuzzifikasi Database

Database relasional telah terbukti sebagai model database yang paling handal

dan dipakai pada bermacam aplikasi sistem informasi dengan sukses. Tetapi

bagaimanapun juga, sistem database relasional yang diperkenalkan oleh Codd

(1970) tidak dapat menangani data yang ambigu. Data yang ditangani harus

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 34: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

34

merupakan data yang pasti atau bernilai kosong (null). Padahal dalam realita

kehidupan sekarang ini sering kali dibutuhkan data yang samar dan melibatkan

banyak variabel yang tidak pasti sebagai acuan dalam proses pengambilan keputusan.

Sejak awal dekade 1980-an, penelitian tentang implementasi pemakaian

kaedah logika fuzzy ( kaedah fuzzy diperkenalkan oleh Zadeh pada tahun 1965) telah

dilakukan untuk pengembangan berbagai macam model database. Tujuan dari

pemakaian logika fuzzy tersebut dalam pemodelan database adalah untuk

memperbaharui kemampuan database klasik agar dapat merepresentasikan dan

memanipulasi data atau informasi yang tidak pasti dan tidak akurat (ambigu).

Ternyata penerapan logika fuzzy ini memberikan kontribusi yang sangat besar

terutama pada model data relasional atau yang sejenisnya. Perlu dicatat, bahwa

pesatnya perkembangan kemampuan komputasi telah memberikan peluang bagi

muculnya apliksai database pada CAD/CAM (Computer Aided Design/ Computer

Aided Manufacturer), multimedia, sistem informasi geografis, dan lainya.

Untuk pengambilan keputusan berdasarkan data yang ambigu, teknologi atau

aplikasi database harus diarahkan tidak hanya mampu menyimpan data mentah saja.

Tetapi lebih kepada kemampuan penanganan informasi ambigu yang integral, di

mana dimungkinkan interprestasi data ambigu menjadi bagian dari proses

pengambilan keputusan. Sebagai contoh, suatu seleksi penerimaan beasiswa

mensyaratkan bahwa yang diterima adalah pelajar yang umurnya masih “MUDA”

dan memiliki indeks prestasi yang “BAIK”. Maka untuk interprestasi pernyataan

tersebut dalam aplikasi sistem database yang ada sekarang ini tidak dapat dilakukan,

hal ini karena adanya kerancuan dalam mendefinisikan data yang dikatagori MUDA

dan klasifikasi IPK-nya BAIK.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 35: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

35

Kelemahan dalam sistem database ini dapat diatasi dengan melakukan

fuzzifikasi database, yaitu dengan mengimplementasikan logika fuzzy kedalam

sistem database. Dengan metode ini mekanisme seleksi yang dilakukan dalam sistem

database tidak lagi dilakukan secara tegas. Tetapi akan memberikan pendekatan

seleksi yang lebih menekankan pada derajat keanggotaan suatu elemen pada

himpunan yang diinginkan. Sebagai contoh apabila pada sistem database diberikan

query sebagai berikut :

SELECT * FROM MAHASISWA WHERE IPK=BAIK

Maka yang diberikan oleh aplikasi adalah mahasiswa-mahasiswa yang memiliki nilai

derajat keanggotan pada himpunan IPK berkategori BAIK dengan rentang nilai

keangotaan antara 0 sampai 1. Jadi semakin tinggi nilai derajat keanggotaan, maka

kelekatan si mahasiswa sebagai mahasiswa dengan kategori memiliki IPK yang

BAIK akan semakin besar. Sehingga untuk beberapa mahasiswa yang masuk dalam

kategori ini akan memiliki nilai derajat keanggotaan yang berbeda-beda, dengan

pengecualian memiliki IPK yang sama. Jadi dengan memanfaatkan nilai derajat

keanggotaan elemen atau entitas terhadap suatu himpunan yang didefinisikan, maka

walaupun tanpa mengimplementasikan sistem inferensi fuzzy (penalaran), sistem ini

dapat dimanfaatkan untuk membantu dalam proses pengambilan keputusan (Decision

Support System).

Dalam perkembangannya, sistem aplikasi database yang mampu menangani

data-data ambigu telah diimplementasikan secara luas. Misalnya, pada area dimana

data-data ambigu bukan hanya hal yang sudah biasa tetapi merupakan sesuatu yang

penting. Seperti pada bidang diagnosa kesehatan, invesatasi dan kecerdasan buatan.

Salah satu hal yang menjadi perhatian utama dalam implementasi fuzzy database

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 36: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

36

adalah efisiensi. Sistem haruslah cukup cepat untuk berinteraksi dengan manusia

sebagai penggunanya. Secara umum, ada 2 cara untuk mengimplementasikan logika

fuzzy dalam database. Yaitu :

1. Fuzzy Query pada Database : Yaitu dengan menghimpun data kepada

suatu himpunan fuzzy berdasarkan nilai derajat keanggotan.

2. Fuzzy Ekstension Database : adalah dengan memasukkan informasi fuzzy

pada database.

2.10.1 Fuzzy Query pada Database

Fuzzy query database adalah membuat suatu fuzzy query terhadap database

klasik. Yaitu, dengan membuat aplikasi yang dapat menangani query dimana

dalam query tersebut terdapat variabel yang bernilai fuzzy atau dengan kata lain

query tersebut memiliki variabel linguistik. Sedangkan data pada database yang

akan diakses merupakan data yang crispy. Misalnya sebagai contoh, suatu sistem

yang akan dibangun memiliki data-data sebagai mana terlihat pada Tabel 2.1.

Tabel 2.1 : Contoh database crispy

Nama Umur Absensi Nilai

Budi 19 4 83

Ahmad 17 2 80

Dian 18 3 50

Rojak 16 1 56

Ali 19 2 65

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 37: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

37

Dari Tabel 2.1, maka grafik fungsi keanggotaan umurnya adalah seperti terlihat pada

Gambar 2.9.

Gambar 2.9 Fungsi keanggotaan Fuzzy ABG

Berdasarkan data yang ada dalam database dan fungsi keanggotaan yang ada,

maka salah satu contoh fuzzy query-nya adalah :

SELECT NAMA FROM TABLE WHERE UMUR = ‘ABG’ AND NILAI < 80

Dari query di atas, terlihat bahwa pada pernyataan WHERE terdapat variabel yang

memiliki nilai linguistik yaitu UMUR. Maka NAMA yang akan ditampilkan adalah

pelajar dengan derajat keanggotaan UMUR dari himpunan fuzzy.

2.10.2 Fuzzy Ekstension Database

Fuzzy database adalah teknik penanganan informasi fuzzy dengan

memasukkan langsung nilai lingustik ke dalam database setelah melalui proses

perhitungan nilai derajat keanggotaan. Sebagai contoh dari Tabel 2.1 setelah

perhitungan fungsi keanggotaan, nilai lingustik dimasukkan ke dalam tabel itu

sendiri. Hal ini terlihat pada Tabel 2.2.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 38: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

38

Tabel 2.2 : Contoh Fuzzy Database

Nama Umur Absensi Nilai

Budi Dewasa 4 Tinggi

Ahmad ABG 2 Tinggi

Dian Sedang 3 Rendah

Rojak ABG 1 Rendah

Ali Dewasa 2 Rata-rata

2.11 MySQL

MySQL adalah sebuah program database server yang mampu menerima dan

mengirimkan datanya dengan cepat, multi user serta menggunakan perintah standar

SQL. MySQL memiliki dua bentuk lisensi, yaitu FreeSoftware dan Shareware.

MySQL yang biasa digunakan adalah MySQL FreeSoftware yang berada di bawah

lisensi GNU/GPL (General Public License). Sebagai database server yang free,

artinya MySQL dapat secara bebas digunakan untuk kepentingan pribadi atau usaha.

Selain sebagai server, MySQL dapat juga berperan sebagai client sehingga sering

disebut database client/ server.

Pada mulanya MySQL hanya berjalan di bawah platform Unix, tetapi pada

perkembangannya muncul beberapa distro yang mampu berjalan pada beberapa

platform yang sifatnya shareware dan corporate seperti untuk Linux dan Window.

Di dalam sistemnya, MySQL merekam semua data user dalam sebuah tabel user

yang berada pada database bernama mysql untuk penanganan hak-hak akses user.

Sebagai database server, MySQL mampu menangani beberapa aplikasi berupa

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 39: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

39

program kompiler maupun bahasa Scripting Server Site seperti PHP, Perl, CGI, dan

Java untuk mengakses data yang disimpannya.

Kelebihan yang ditawarkan oleh MySQL sebagai Relational Database

Management System (RDBMS) adalah :

1. MySQL adalah sebuah software opensource dengan kapasitas

penyimpanan data hingga berukuran terabytes.

2. MySQL merupakan database client/server yang multiusers, sehingga

sebagai server dapat terhubung ke media internet untuk eksplorasinya.

Sedangkan sebagai client dapat melakukan query untuk mengakses

database server. Selain itu dapat digunakan oleh banyak pengguna

sekaligus.

3. MySQL didukung oleh ODBC (Open Database Connectivity), artinya

databasenya dapat diakses aplikasi apasaja seperti Java, Delphi dan Visual

Basic.

2.12 Bahasa Java

Java merupakan bahasa pemrograman yang dikembangkan oleh Sun

Microsystem. Bahasa Java dirancang sedemikian rupa agar perangkat lunak yang

dibuat menggunakan bahasa Java dapat berjalan pada semua platform (platform

independence). Ini berati bahwa sekali suatu program ditulis atau aplikasi dibangun

maka dapat dijalankan pada berbagai sistem operasi sebagaimana mestinya, tanpa

perlu melakukan kompilasi ulang. Java termasuk salah satu bahasa yang menerapkan

konsep pemrograman berorientasi objek (OOP).

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 40: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

40

Untuk mengembangkan aplikasi berbasis Java, diperlukan Java Development

Kit (JDK). Saat ini JDK telah mencapai versi 2 yang dikenal dengan Java 2

Platform. Platform ini dibagi menjadi tiga kategori, yaitu :

1. Java 2 Standard Edition (J2SE). Kategori ini digunakan untuk

mengembangkan dan menjalankan aplikasi Java berbasis PC.

2. Java 2 Enterprise Edition (J2EE). Platform ini digunakan untuk

mengembangkan aplikasi java dilingkungan enterprise, dengan

fungsi-fungsi seperti Enterprise Java Beans (EJB), COBRA, Servlet,

dan Java Server Page (JSP).

3. Java 2 Micro Ediion (J2ME) J2ME digunakan untuk mengembangkan

dan menjalankan aplikasi Java berbasis handheld devices, seperti

Personal Data Assistent (PDA), PocketPC, dan HandPhone.

2.13 IDE NetBeans 5.5

NetBeans sebagai IDE yang ditujukan untuk memudahkan pemrograman Java

telah disosialisasikan dikalangan instruktur Java dari Sun Microsystem pada awal

tahun 2006. Dalam NetBeans, pemrograman yang dilakukan berbasis visual dan

event-driven seperti pada IDE lainnya seperti Borland Delphi dan Microsoft Visual

Studio. NetBeans mencakup compiler atau builder, dan debugger internal. Fitur ini

akan sangat memudahkan proses paska perancangan program karena proses

deployment dan tes dapat dilakukan dalam satu IDE. NetBeans dirancang untuk

memudahkan perancangan dan pemakaian komponen dan mendaftarkannya di dalam

palette dari IDE NetBeans. Komponen tersebut nantinya akan dapat dipakai dalam

program Java, sehingga pembuatan komponen JavaBeans menjadi sangat mudah.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 41: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

41

Tersedia template dan wizard yang dapat dipakai langsung dengan mekanisme drag

and drop serta kerangka kode program akan dihasilkan secara auto-generete.

NetBeans juga mendukung source-control untuk penulisan program, dalam hal ini

dapat dipakai internal VCS (Version Control System) yang telah disediakan (yaitu

CVS = Concurent Versioning System), ataupun memakai VCS eksternal.

Di dalam NetBeans, semua perancangan dan pemrograman dilakukan di

dalam kerangka sebuah proyek. Proyek Netbeans merupakan sekumpulan file yang

dikelompokkan di dalam satu kesatuan. File-file ini dapat berada pada satu direktori

atau pisah, tergantung dari jenis proyeknya. Ada jenis proyek standar dan ada proyek

bebas (free-form). Proyek standar memakai skrip Ant (otomatis dibuat oleh

NetBeans), sedangkan proyek free-form memakai skrip Ant yang dapat dibuat

sendiri.

Yang dimaksud dengan skrip Ant disini adalah Jakarta Ant. Ant dibangun

oleh Apche Software Foundation (http://ant.apache.org). Ant dipakai untuk

otomatisasi tugas-tugas yang rutin dilakukan oleh developer, seperti kompilasi, tes,

debug, running, dan packaging. Di sini Ant dipakai untuk mendefinisikan proses

build dan run dari proyek. Jakarta Ant sebagai build-tool saat ini boleh dikatakan

dominan dalam lingkungan Java/ XML. Ant dibangun dengan Java sehingga

memiliki keuntungan bersifat multi-platform sedangkan skripnya ditulis dengan

dalam format XML. Untuk membangun aplikasi Java dengan NetBeans pengetahuan

tentang Ant bukalah suatu keharusan, karena telah tersedia bermacam-macam

template standar yang disajikan dalam bentuk wizard.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 42: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

42

2.14 Java Database Connectivity (JDBC)

Pada prinsipnya sembarang server database dapat diakses oleh program Java

asalkan tersedia driver Java Database Connectivity (JDBC) yang sesuai. Dengan

bahasa Java pengaksesan terhadap database dapat dilakukan baik secara lokal

maupun remote, SQL maupun non-SQL.

Java Database Connectivity (JDBC) adalah versi ODBC yang dibuat oleh

Sun Microsystems yang sepenuhnya dibangun dengan Java API. Sehingga JDBC

memiliki sifat crossplatform-nya Java. Sedangkan ODBC dibangun dengan bahasa C

sehingga hanya dapat dijalankan pada platform yang spesifik. Dengan JDBC

database-database dari vendor seperti Oracle, Sybase, Informix, dan Interbase dapat

diakses dengan syarat ketersedian driver database. Setiap server dari vendor berbeda

memerlukan driver berbeda, sedangkan untuk vendor yang telah bekerjasama dengan

Java tersedia driver dalam JDBC API yang dapat langsung dipakai. Dengan JDBC

perintah-perintah SQL dapat dikirimkan dari Java dan dijalankan oleh Relational

Database Management Systems (RDBMS) yang bersangkutan. Kelas-kelas serta

interface JDBC API dapat diakses dari dalam paket java.sql (core API) serta

javax.sql (standard Extension API).

Sedangkan untuk pengembangan aplikasi dilakukan dalam platform Windows

dan menggunakan RDBMS MySQL, maka konektor yang dipakai sebagai driver

untuk koneksi program Java (melalui JDBC) adalah MySQL Connector/J. Biasanya

paket ini didistribusikan dalam bentuk file ZIP yang berisi source serta data biner

dalam bentuk JAR. File JAR yang diperlukan untuk mengakses sever MySQL dari

program Java umumnya memiliki nama berbentuk “mysql-connector-java-X.Y.Z-

bin.jar” dimana X.Y.Z merupakan versi dari konektor.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 43: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

43

BAB III

PERANCANGAN DAN PEMBANGUNAN SISTEM

3.5 Perancangan Database

Database yang digunakan adalah database standar yang umum digunakan

dengan struktur database relasional. Secara keseluruhan ada 3 database yang akan

dibuat untuk tujuan dan kegunaan yang berbeda, yaitu database mahasiswa,

temporari dan hasil.

3.5.1 Database Mahasiswa

Database ini merupakan database yang merekam data-data mahasiswa yang

akan diproses. Dalam database ini tabelnya diberi nama MAHASISWA, struktur

tabelnya terlihat pada Gambar 3.1 di bawah ini dengan NIM sebagai primary key.

Gambar 3.1 Struktur Tabel MAHASISWA

3.5.2 Database Temporari

Database ini berguna untuk menyimpan hasil perhitungan nilai fungsi

keanggotaan (membership function) yang telah ditentukan. Dalam database ini

terdapat dua tabel yang masing-masing bernama TEMPORARI dan TEMPORARI1.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 44: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

44

Tabel TEMPORARI menyimpan data berupa nilai derajat keanggotaan ( µ ) yang

bersumber dari pengolahan dengan fungsi keanggotaan dan himpunan fuzzy dari

database mahasiswa. Struktur tabelnya tampak seperti pada Gambar 3.2, kriteria

dari tabel ini adalah :

1. Tabel memiliki kolom NIM yang berelasi dengan kolom NIM pada tabel asal

sebagai primary key.

2. Kolom selain kolom NIM, NAMA, dan STATUS merupakan kolom yang

berisi nilai keanggotaan ( µ ).

���������

�� ���

���

�����

����� �

��������

�����������

������

Gambar 3.2 Struktur Tabel TEMPORARI

Tabel yang kedua adalah tabel TEMPORARI1, di dalam tabel ini terdapat

kolom DK yang merekam nilai derajat keanggotaan ( µ ) hasil dari operasi himpunan

dari kolom DK_IPK dan DK_TOEFL dari TEMPORARI. Sedangkan kolom DK1

merekam nilai derajat keanggotan ( µ ) dari operasi himpunan antara kolom

DK_ABSENSI dan kolom DK_GAJI_ORTU. Kemudian untuk mendapat nilai

derajat keanggotaan final yang nantinya dijadikan sebagai nilai derajat

perkomendasian, didapat dengan melakukan operasi himpunan antara DK dan DK1

dan disimpan di dalam kolom DK_HASIL. Struktur tabel ini tampak pada Gambar

3.3.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 45: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

45

Gambar 3.3 Struktur Tabel TEMPORARI1

3.5.3 Database Hasil

Database ini akan menyimpan hasil dari seluruh proses yang dilakukan oleh

sistem, nama tabel pada database ini adalah HASIL. Dalam tabel ini terdapat NIM

mahasiswa yang direkomendasikan beserta nilai derajat perekomendasian yang

merupakan hasil dari perhitungan fire strength. Dari tabel ini pengguna dapat melihat

mahasiswa-mahasiswa yang direkomendasikan berdasarkan kriteria yang telah

dimasukkan. Tabel HASIL hanya terdiri dari 3 kolom, yaitu kolom NIM sebagai

primary key, kolom NAMA, dan kolom DERAJAT_PEREKOMENDASIAN.

3.6 Rancangan Sistem

Secara umum sistem yang akan dibuat adalah seperti terlihat pada Gambar

3.4, dimana database yang berisi data-data mahasiswa akan dibaca oleh sistem,

kemudian setelah ditentukan fungsi keanggotaan dan himpunan fuzzy-nya sistem

akan menghitung nilai derajat keanggotaan data. Mekanisme pembacaan datanya

dilakukan dengan mengirimkan query dari aplikasi Java ke server MySQL. Data

yang telah dibaca kemudian diolah berdasarkan pendefinisikan fungsi keanggotaan

dan query data untuk mendapatkan nilai fire strength-nya. Setelah proses tersebut,

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 46: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

46

data hasil akan ditampil oleh aplikasi Java dalam bentuk tabel hasil dan dikirimkan

kembali ke server database membentuk tabel hasil.

Gambar 3.4 Bagan Sistem

3.6.1 Data Flow Diagram

1. Konteks Diagram

Konteks diagram sistem adalah seperti terlihat pada Gambar 3.5, Dari

konteks diagram terlihat bahwa ada dua entitas luar yang berhubungan dengan sistem

ini, yaitu : Mahasiswa dan Pengguna. Dari mahasiswa akan diperoleh data-data

mahasiswa. Sedangkan pengguna yang menjalankan sistem dapat menentukan

sendiri klasifikasi dari mahasiswa yang akan direkomendasikan, yaitu dengan cara :

1. Memasukkan variabel fuzzy yang dibutuhkan

2. Mendefinisikan himpunan fuzzy dari masing-masing variabel fuzzy

3. Menentukan fungsi keanggotaan dari masing-masing himpunan fuzzy

Kemudian untuk mendapatkan mahasiswa yang direkomendasikan, pengguna dapat

memasukkan query yang telah ada pada user interface. Hasil yang diterima oleh

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 47: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

47

pengguna adalah tabel yang berisi data mahasiswa yang direkomendasikan

berdasarkan variabel fuzzy, himpunan fuzzy, fungsi keanggotaan, dan query yang

dimasukkan oleh pengguna.

Gambar 3.5 Konteks Diagram Sistem

2. Overview Diagram

Overview diagram menunjukkan gambaran proses yang terajadi dalam sistem

secara garis besar. Seperti terlihat pada Gambar 3.6. Dari overview diagram tersebut

terlihat ada 2 proses yang terjadi, yaitu :

1. Proses Inisialisasi

Pada tahapan ini dilakukan inisialisasi hal-hal yang dibutuhkan oleh sistem.

Dalam proses ini pengguna harus melakukan hal-hal sebagai berikut :

a. Menentukan field (kolom) sebagai sumber data dimana fuzzifikasi

database dilakukan. Hal ini diperlukan karena dalam sistem ini terdapat

batasan yang salah satunya adalah variabel-variabel fuzzy yang akan

fuzzifikasi harus berada pada satu tabel asal yang sama.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 48: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

48

b. Pendefinisian fungsi keanggotaan himpunan fuzzy. Hal ini bertujuan

untuk menentukan tipe pemetaan titik-titik input data ke dalam nilai

keanggotaan (derajat keanggotaan).

c. Mendefinisikan himpunan fuzzy untuk data-data yang akan

difazzifikasi, dalam hal ini pengguna dapat menentukan sendiri

himpunannya.

�����������

������ �!���"#!!�

$�%&��!�������

!#!�%!

'!���

(!

Gambar 3.6 Overview Diagram Sistem

2. Proses Fuzzifikasi

Untuk proses fuzzifikasi keterlibatan pengguna masih diperlukan, yaitu untuk

memasukkan fuzzy query yang nantinya akan dipakai untuk seleksi data. Untuk lebih

detail-nya maka proses fuzzifikasi akan ditampilakan seperti yang terlihat pada

Gambar 3.7 dan untuk pemrogramannya dapat dilihat pada Lampiran C.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 49: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

49

Dalam proses fuzzifikasi ada beberapa tahapan yang dilakukan, yaitu :

a. Proses perhitungan derajat keanggotaan. Pada proses ini dilakukan

perhitungan nilai derajat keanggotaan ( µ ) untuk masing-masing

himpunan fuzzy yang ada dalam sistem. Perhitungan nilai ini

berdasarkan tipe fungsi keanggotaan yang sebelumnya telah

didefinisikan oleh pengguna. Data yang akan dihitung nilai

keanggotaannya diklasifikasikan menurut atribut himpunan fuzzy.

Kemudian hasilnya akan disimpan dalam tabel TEMPORARI yang ada

dalam database temporari sesuai dengan atribut masing-masing kolom

yang diproses. Kode program perhitungan nilai derajat keanggotaan ini

dapat dilihat pada lampiran D.

b. Proses perhitungan nilai fire strength. Nilai fire strength menunjukkan

seberapa besar rekomendasi yang diberikan oleh sistem (fire strength

ini memiliki nilai yang berkisar antara 0-1). Nilai 1 menunjukkan

rekomendasi penuh, jadi semakin mendekati 1 maka tingkat

perekomendasiaan seorang mahasiswa akan semakin tingggi. Namun

apabila fire strength mendekati 0, maka mahasiswa tersebut semakin

tidak direkomendasikan. Perhitungan fire strength ini membutuhkan

data DK ( µ ) dan variabel linguistik dari query yang ada. Selama

perhitungan fire strength data hasil akan disimpan langsung pada tabel

HASIL di database hasil. Untuk penjelasan tentang perhitungan fire

strength ini dapat dilihat pada subbab yang akan secara khusus

membahas proses perhitungan fire strength. Kode program perhitungan

nilai fire strength ini dapat dilihat pada lampiran E.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 50: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

50

c. Proses menampilkan tabel hasil. Proses ini adalah proses yang terakhir

dari rangkaian proses yang dilakukan oleh sistem. Proses ini akan

menampilkan tabel hasil yang berisi nilai rekomendasi untuk masing-

masing mahasiswa berdasarkan perhitungan perhitungan fire strength.

Gambar 3.7 Detail Diagram Sistem

3.6.2 Batasan-batasan dalam Sistem

Batasan-batasan yang ada dalam sistem ini, antara lain adalah :

1. Derajat keanggotaan disimpan pada kolom (field) dengan atribut umum,

sehingga atribut tidak mendefinisikan kategori himpunan dari suatu variabel.

2. Fungsi keanggotaan yang tersedia hanya kurva bahu.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 51: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

51

3. Himpunan fuzzy untuk masing-masing variabel fuzzy tidak dinamis, sehingga

pengguna tidak dapat menentukan batasan sesuai dengan keinginannya tanpa

mengubah sintaks program Java.

4. Query yang dapat dilakukan hanya dengan statement SELECT.

5. Variabel fuzzy diasumsikan setara dalam perhitungan fire strength.

3.6.3 Proses Perhitungan Fire Strength

Operator yang bisa digunakan untuk menghitung fire strength dalam sistem

ini ada dua yaitu AND dan OR. Dalam pengerjaannya sistem akan mengambil

operand dan operator sesuai dengan urutan mulai dari yang pertama di sebelah kiri

sampai pada yang terakhir disebelah kanan. Sebagai contoh adalah statement

linguistic berikut ini :

SELECT * FROM TEMPORARI WHERE IPK = ‘BAIK’ AND TOEFL =

KURANG’ OR ABSENSI = ‘BAIK’

Maka urutan pengerjaan yang akan dilakukan oleh sistem adalah :

1. Pertama kali sistem akan mengambil nilai keanggotaan dari variabel

fuzzy IPK dengan himpunan fuzzy baik dan variabel fuzzy TOEFL

dengan himpunan fuzzy kurang yang telah ada pada tabel

TEMPORARI. Kemudian melakukan operasi dengan operator AND.

Karena operator AND maka yang diambil adalah nilai minimal dari

kedua nilai derajat keanggotaan tersebut., kemudian hasilnya akan

disimpan dalam tabel TEMP1.

2. Langkah selanjutnya, hasil dari operasi yang pertama tadi misalnya

diberi nama Temp1. Maka selanjutnya sistem akan mengambil nilai

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 52: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

52

sementara yang ada pada tabel TEMP1 ini dan melakukan perhitungan

fire strength dengan operand (ABSENSI = ‘BAIK’ ) dengan operator

selanjutnya (OR) lalu disimpan di tabel TEMP2.

3. Ketika statement-nya sudah habis, berarti nilai yang dimasukkan ke

tabel TEMP2 adalah hasilnya. Maka selanjutnya data tersebut

dimasukkan ke tabel HASIL pada database hasil.

3.7 Rancangan Antarmuka

Pembuatan antarmuka atau Graphical User Interface (GUI) serta

pemrograman untuk aplikasi ini menggunakan Java Standard Edition, JDK versi 1.6

(internal-version 1.6, code-name Mustang). Sedangkan sebagai IDE dalam

pengembangan ini digunakan Netbeans 5.5 yang memiliki fitur Matisse GUI-

Builder.

3.7.1 Menu Utama

Frame menu utama merupakan tampilan yang disediakan untuk melakukan

semua proses yang berhubungan dengan fuzzifikasi dan fuzzy query dalam sistem

ini. Dalam frame menu utama seperti terlihat pada Gambar 3.8, terdapat empat

tabbedpane yang masing- masing untuk field IPK, TOEFL, ABSENSI, dan GAJI

ORANG TUA. Pada tabbedpane ini pengguna harus menentukan fungsi

keanggotaan yang akan dipakai dengan memilih fungsi pada combobox Fungsi

Keanggotaan dan menentukan himpunan fuzzy untuk masing-masing field dengan

mengambil pilihan pada combobox Himpunan.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 53: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

53

Gambar 3.8 Menu Utama

Dari frame menu utama ini pengguna dapat melakukan beberapa fungsi yang

disediakan oleh aplikasi, yakni dengan menekan button-button yang tersedia. Berikut

adalah penjelasan mengenai fungsi-fungsi tersebut :

1. Button Database

Button ini digunakan untuk melihat database mahasiswa, yaitu database

yang dijadikan sumber data untuk difuzzifikasi dalam aplikasi ini

2. Button Update Data

Dengan menekan Button Update data maka akan mucul frame dengan

tampilan seperti terlihat pada Gambar 3.9. Di dalam frame ini tersedia

fungsi untuk mencari data dengan query berupa NIM mahasiswa.

Apabila data yang dicari tidak ada dan bila pengguna hendak

menambahkan data baru, maka pengguna dapat langsung

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 54: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

54

mengisikannya sesuai dengan field yang ada serta menyimpannya. Dari

frame ini pengguna dapat juga melakukan penghapusan data.

Gambar 3.9 Frame Update Data

3. Button Fuzzifikasi

Button Fuzzifikasi dipakai untuk mengolah data berdasarkan fungsi

keanggotaan dan himpunan pada masing-masing field dari database

MAHASISWA. Hasil dari fuzzifikasi ini nantinya akan disimpan di

dalam database bernama TEMPORARI yang berisi nilai-nilai derajat

kenggotaan.

4. Button Temp

Button ini digunakan untuk melihat tabel Temporari, yaitu tabel yang

berisi nama-nama mahasiwa beserta nilai derajat keanggotaannya pada

masing-masing himpunan fuzzy.

5. Button Clear Temp

Button ini digunakan untuk memberisihkan tabel Temporari, sesuai

dengan kemampuan sistem bahwa jika hendak melakukan proses

fuzzifikasi selanjutnya (yang kedua kali atau pengulangan proses).

Maka tabel temporari harus dibersihkan terlebih dahulu, jika hal ini

tidak dilakukan oleh pengguna maka akan menyebabkan sistem error.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 55: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

55

6. Button Query Seleksi

Button ini digunakan untuk melakukan proses perhitungan fire strength

data-data yang ada di dalam tabel Temporari.

7. Button Hasil

Button ini digunakan untuk melihat database hasil, yaitu tabel berisikan

daftar mahasiswa yang direkomendasikan untuk mendapat beasiswa

8. Button Clear Hasil

Button ini digunakan untuk memberisihkan tabel Hasil, jika hendak

melakukan proses seleksi selanjutnya (yang kedua kali atau

pengulangan proses). Maka tabel Hasil harus dibersihkan terlebih

dahulu, jika hal ini tidak dilakukan oleh pengguna maka akan

menyebabkan sistem error.

9. Check Button Status

Check Button digunakan untuk mengekspresikan nilai false atau true

untuk status apakah mahasiswa sudah atau belum menerima beasiswa.

3.7.2 Seleksi Data

Button Query Seleksi yang digunakan untuk seleksi data dan menghitung

nilai fire strength, bila ditekan sekaligus akan menyimpan hasilnya ke dalam

database HASIL. Tetapi sebelumya pengguna harus menentukan operator-oprator

Zadeh untuk perhitungan fire strength pada combox operator yang tersedia. Menu

untuk seleksi data ini tampak seperti pada Gambar 3.10.

Dalam proses seleksi ini himpunan fuzzy yang dioperasikan dibagi menjadi

dua kelompok.. Operator 1 akan melakukan operasi pada kelompok pertama, yaitu

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 56: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

56

antara nilai derajat keanggotaan pada himpunan fuzzy untuk variabel IPK dengan

nilai derajat keanggotaan pada himpunan fuzzy untuk variabel TOEFL. Operator 3

digunakan untuk melakukan perhitungan fire strength antara variabel ABSENSI

dengan variabel GAJI ORTU untuk nilai derajat keanggotaanya pada himpunan yang

didefinisikan untuk masing-masing variabel tersebut. Sedangkan operator 2 adalah

operator yang akan melakukan proses perhitungan fire strength diantara kedua

kelompok ini. Jadi dalam penggunaan aplikasi ini, proses pemilihan operator harus

dimulai dengan memilih operator 1 atau operator 2 terlebih dahulu dengan

mengakhirkan pemilihan untuk operator 2. Jika hal tidak dilakukan sesuai dengan

urutan tersebut, maka aplikasi akan memberikan nilai yang tidak sesuai dengan

query.

Untuk check button Status, apabila pengguna memberikan nilai false. Maka

sistem atau aplikasi akan mencari mahasiswa yang belum pernah menerima beasiswa

sebelumnya. Tetapi apabila check button ini ditekan oleh pengguna atau diberikan

nilai true, maka dalam proses seleksi data dari tabel Temporari sistem akan

mengambil mahasiswa yang sudah pernah menerima beasiswa sebelumnya.

Gambar 3.10 Fuzzy Query Data

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 57: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

57

3.8 Koneksi Database

Untuk mengakses database yang pertamakali harus dilakukan adalah meng-

install driver dan kemudian membuat koneksi ke server database. Setelah koneksi

terbangun maka perintah-perintah SQL (query) untuk membangun, mengakses dan

manajemen database dapat dilakukan dari aplikasi berbasis Java, untuk lebih rinci

tentang coding koneksi antara server database dan Java dapat dilihat pada Lampiran

A, pada lampiran ini tercakup seluruh proses dari awal sampai akhir koneksi serta

bagaimana konversi data dilakukan sehingga aplikasi yang dirancang dapat berfungsi

sesuai dengan harapan

. Pada prinsipnya pemrograman database yang dilakukan dari aplikasi

berbasis Java melibatkan unsur-unsur sebagai berikut :

1. Loading dan setting driber JDBC.

2. Mendirikan koneksi database

3. Membuat obyek SQL-statement.

4. Mengeksekusi SQL-statement.

5. Menerima result-set sebagai data hasil eksekusi SQL--statement.

6. Menampilkan data result-set.

7. Menutup koneksi.

3.8.1 Registrasi Driver

Dalam IDE NetBeans yang dipakai dalam pengembangan aplikasi ini,

terdapat Database Explorer. Dengan memakai explorer ini, dapat dilakukan

beberapa hal yaitu seperti melihat dan mengubah koneksi yang ada, baik yang

berjalan maupun yang tidak berjalan. Memilih dan menambah driver database yang

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 58: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

58

baru. Serta menjalankan perintah-perintah SQL terhadap server database. Dengan

cara ini maka database, tabel, view dab manajemen database dapat dilakukan. Tetapi

terlebih dahulu harus dilakukan registerasi driver ke kelas JDBC (Java Database

Connectivity) untuk server database yang belum terdaftar. Apabila driver telah

tersedia di dalam JDBC API maka koneksi server databasenya sudah dapat langsung

dilakukan tanpa harus mendaftarkannya.

Di dalam sistem fuzzifikasi ini, konektor MySQL Connector/J dipakai

sebagai driver bagi koneksi program Java (melalui JDBC) ke MySQL. Di dalam IDE

NetBeans, untuk mendaftarkan driver ini dilakukan dengan langkah-langkah sebagai

berikut :

1. Dalam jendela Runtime, klik kanan di atas node Drivers dan kemudian

jalankan menu kontekstual Add Driver sehingga dialog Add JDBC

Driver terbuka.

2. Klik tombol Add dan tentukan lokasi dari file connector (JAR) berada.

3. Setelah dipilih, klik tombol Find dan kemudian pilih Driver Class

org.gjt.mm.mysql.Driver lalu tekon tombol OK.

Setelah proses tersebut dilaksanakan maka pada menu Runtime di dalam

node Driver-nya akan ditambahkan node baru yang bernama

jdbc:mysql://localhost:3306[root on Default schema].

3.8.2 Kelas DriverManager

Kelas java.sql.DriverManager dipakai untuk loading dan mengatur driver

JDBC, serta untuk mendirikan koneksi ke database. Untuk load terhadap driver

dilakukan dengan memakai method Class.forName(). Sedangkan untuk mendirikan

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 59: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

59

koneksi, dipakai method getConnection(), dua bentuk dari method ini adalah sebagai

berikut :

• connection getConnection(String url)

• connection getConnection (String url, String user, String pwd)

Parameter url (uniform resource locator) yang dipakai untuk menunjukkan lokasi

database. Bentuk umumnya adalah JDBC:subprotocol:subname. Sedangkan user dan

pwd adalah nama pemakai (user-ID) dan password. Berikut ini adalah penggalan

listing program yang dipakai untuk koneksi ke database yang bernama mahasiswa :

Connection con = null; Statement stmt = null; public Database() { try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mahasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("ErrorSQl: " + e.getMessage()); }

Dari listing diatas, pertama kali program akan loading driver MySQL dengan

memakai method class.forName(). Kemudian koneksi database akan dilakukan oleh

DriverManager dengan memakai getConnection(). Dalam URL yang dipakai sebagai

subprotokol adalah mysql, localhost yang secara default memiliki IP 127.0.0.1

dinyatakan sebagai lokasi dari server MySQL (http//localhost). Nomor port 3306

merupakan nomor port default dari server MySQL. Database yang diakses bernama

mahasiswa, user ID-nya adalah root dengan password elektro.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 60: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

60

3.8.3 Interface Connection

Ketika DriverManager membentuk koneksi dengan memakai

getConnection(), maka method ini akan mengembalikan obyek Connection. Interface

java.sql.Connection dipakai untuk membentuk koneksi (session) ke database serta

mengatur hubungan tersebut, seperti commit, rollback atau menyiapkan (prepare)

SQL-statement.

Keneksi yang telah dibuat pada akhirnya harus ditutup dengan memakai

close(). Berikut adalah penggalan programnya :

private void formWindowClosing(java.awt.event.WindowEvent evt) { if (stmt != null){ try{ stmt.close(); } catch(SQLException e) { System.err.println("Error SQL: " + e.getMessage()); } } if (con!= null){ try{ con.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } }

3.8.4 Interface Statement

Inteface java.sql.statement dipakai untuk menangani dan mengeksekusi SQL-

statement yang dikirimkan dari Aplikasi ke server database. Statemant dapat dibuat

dari obyek Connection dengan memakai method Connection.createStatement().

Statement natinya akan dieksekusi di dalam method getResultData(). Berikut ini

adalah listing program method getResultData() dan closeResultSet() :

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 61: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

61

public ResultSet getResultData(){ ResultSet rs = null; try { rs = stmt.executeQuery("select * from mahasiswa"); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } return rs; } public void closeResultSet(ResultSet rs){ if(rs !=null){ try{ rs.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } }

Dalam method getResultData(), obyek Statement dieksekusi oleh method

executeQuery(). Dalam hal ini SQL-statement yang dieksekusi adalah SELECT *

FROM mahasiswa, yang artinya meminta (query) seluruh kolom (“ *” ) dari tabel

mahasiswa dan hasilnya berupa ResultSet. Sedangkan method closeResultSet() adalah

method yang dipakai untuk menutup obyek ResultSet.

3.8.5 Interface ResultSet

Result-set merupakan data tabel yang ada di dalam database. Jika SQL-

statement tertentu dikirimkan ke server database untuk membaca record maka

hasilnya berupa result-set, yaitu baris-baris data hasil dari eksekusi query SQL

tersebut. Interface java.sql.ResultSet berfungsi untuk mengontrol letak kursor yang

menunjukkan baris (record) yang sedang aktif di dalam tebel database. Untuk

begerak ke baris berikutnya dipakai method next(). Untuk bergerak ke baris

sebelumynya dipakai method previous(). Sedangkan methode first() dan last()

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 62: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

62

dipakai untuk menuju baris pertama dan baris terakhir dari result-set. Untuk lebih

jelasnya, kode programnya dapat dilihat pada Lampiran B.

Interface ini juga berisi beberapa method yang berawalan get, seperti

getNumeric(), getDecimal(), getDate(), getDouble(), dan sebagainya. Method-method

ini dipakai untuk konversi dari tipe data SQL-based ke tipe data Java karena tipe data

antara SQL dan Java berbeda. Dalam SQL, tipe data lebih condong pada loossely-

typed sedangkan dalam Java strongly-typed. Berikut ini adalah daftar pemetaan tipe

data SQL – Java :

Tabel 3.1 Konversi tipe data SQL-Java

Tipe Data SQL Tipe Data Java

NUMERIC java.sql.Numeric

CHAR String

DECIMAL java.sql.Numeric

VARCHAR String

TYNIINT byte

LONGVARCHAR String

SMALLINT short

DATE java.sql.Date

INTEGER int

TIME java.sql.Date

BIGINT long

BINARY byte[]

REAL float

VARBINARY byte[]

FLOAT float

LANGVARBINARY byte[]

DOUBLE double

BIT boolean

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 63: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

63

Berikut ini adalah penggalan program yang memakai

interface.java.sql.ResultSet :

public DatabaseKastemisasi(ResultSet rs) { ResultSets = new ArrayList<String[]>(); try { while(rs.next()){ String[] row = { rs.getString("NIM"), rs.getString("NAMA"), rs.getString("IPK"), rs.getString("TOEFL"), rs.getString("ABSENSI"), rs.getString("GAJI_ORTU"), rs.getString("STATUS"), }; ResultSets.add(row); } } catch(Exception e){ System.out.println("Exception in deddy1model"); } } public Object getValueAt(int rowindex, int columnindex){ String[] row = ResultSets.get(rowindex); return row[columnindex]; } public int getRowCount(){ return ResultSets.size(); } public int getColumnCount(){ return colnum; } public String getColumnName(int param){ return colNames[param]; }

Dari penggalan program di atas, obyek Statement yang mengeksekusi

perintah SQL menghasilkan ResultSet, yaitu dengan memakai method

executeQuery(). Setelah obyek ResultSet didapatkan, barulah data dapat ditampilkan

atau diproses dengan memakai method-method lain yang ada.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 64: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

64

BAB IV

UJI COBA APLIKASI DAN ANALISA

4.5 Uji Coba Fuzzifikasi

Untuk menjalankan sistem fuzzifikasi database dengan menggunkan metode

fuzzy query database ini, pengguna tinggal menjalankan program yang telah ter-

install. Dengan aplikasi ini pengguna tidak perlu login ke server database sebelum

menjalankan aplikasi, karena mekanisme login dan manajemen data secara sederhana

telah tersedia di dalam aplikasi. Tetapi walaupun begitu harus diperhatikan bahwa

server database yang dalam hal ini adalah MySQL server harus dalam keadaan aktif.

4.5.1 Percobaan 1

Pada percobaan 1 ini, aplikasi dijalankan sesuai dengan urutan proses yang

ada dengan tidak mengubah nilai default untuk masing-masing variabel fuzzy. Hasil

yang diharapkan adalah mahasiswa yang direkomendasikan berdasarkan kriteria

yang sudah ditetapkan sistem dengan query yang diberikan pengguna. Dalam

percobaan ini data yang digunakan adalah berasal dari database mahasiswa deangan

nama tabel MAHASISWA. Seperti terlihat pada Tabel 4.1.

Kemudian pada tabbed IPK didefinisikan bahwa fungsi keanggotaan dari IPK

adalah fungsi kurva dengan himpunan fuzzy istimewa. Pada saat pendefinisian ini

dilakukan sistem akan menampilkan pada pengguna nilai semesta pembicaan yang

dimungkinkan bagi domain IPK dan secara default juga sistem akan memberikan

nilai untuk batas bawah, nilai tengah, dan batas atas himpunan serta query seleksi

data untuk variabel IPK. Bagi pengguna yang ingin menentukan sendiri batas bawah,

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 65: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

65

nilai tengah, dan batas atas himpunan dapat secara langsung mengedit nilai yang

diberikan sistem. Tetapi harus sesuai dengan semesta pembicaraan bagi variabel

fuzzy yang diproses. Sedangkan untuk query seleksi pengguna tidak dapat

mengubahnya setelah pendefinisian variabel. Query ini berfungsi sebagai

pendefinisian tentang sifat fuzzy data pada variabel yang ditetapkan.

Tabel 4.1 Tabel Mahasiswa

Setelah selesai dengan variabel IPK, maka himpunan untuk variabel TOEFL

juga didefinisikan, yaitu dengan memilih fungsi keanggotaan kurva bahu dan

himpunan fuzzy baik. Sama seperti pada pendefinisian untuk IPK, secara default

sistem akan memberikan nilai untuk domain dan batas bawah, nilai tengah, batas atas

domain serta query seleksi. Demikian juga untuk variabel ABSENSI pendefinisian

juga dilakukan dengan memilih himpunan tertinggi yang ditawarkan di dalam field

Himpunan. Sedangkan untuk variabel GAJI_ORTU dilakukan sebaliknya. Yaitu

dengan memilih himpunan terendah yang ditawarkan aplikasi. Dengan

pendefinisiaan seperti ini, diharapkan sistem akan merekomendasikan mahasiswa

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 66: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

66

dengan nilai IPK istimewa, TOEFL istimewa, ABSENSI baik, dan GAJI_ORTU

rendah, serta belum menerima beasiswa.

Setelah proses pendefiniian selesai, maka button fuzzifikasi ditekan untuk

menghitung nilai derajat keanggotaan untuk setiap record pada database sesuai

variabel fuzzy masing-masing untuk himpunan fuzzy yang telah ditetapkan.

Kemudian setelah perhitungan nilai derajat keanggotan untuk masing-masing

variabel selesai, maka tabel temporari telah merekam hasil perhitungan tersebut.

Seperti terlihat pada Tabel 4.2.

Tabel 4.2 Tabel Temporari Percobaan 1

Tahapan selanjutnya adalah melakukan query untuk meyeleksi mahasiswa

yang direkomendasikan untuk mendapat beasiswa. Pada tahapan ini pengguna harus

memilih jenis operasi himpunan yang ada pada panel query seleksi. Operator yang

disediakan untuk operasi ini hanya ada dua, yaitu operator OR dan AND. Dalam

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 67: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

67

sistem ini untuk memasukkan operatornya harus dimulai dengan memasukan

operator pertama atau kedua terlebih dahulu dengan mengakhirkan operator kedua.

Pada Gambar 4.1 tampak bagaimana operasi query pada percobaan pertama ini.

Gambar 4.1 Query Seleksi Data

Setelah operator untuk masing-masing himpunan fuzzy ditentukan, maka

untuk memprosesnya dan agar data kirimkan ke tabel HASIL pada database hasil,

pengguna harus menekan tombol Query Seleksi. Sedangkan untuk melihat hasilnya

pengguna tinggal menekan tombol Hasil. Hasil dari percobaan 1 ini dapat dilihat

pada Tabel 4.3.

Tabel 4.3 Tabel Hasil Percobaan 1

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 68: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

68

4.5.2 Percobaan 2

Percobaan 2 ini dilakukan dengan cara yang sama dengan percobaan 1, tetapi

pada percobaan ini nilai-nilai untuk batas bawah, nilai tengah, nilai batas atas untuk

setiap variabel fuzzy akan diubah. Artinya sistem tidak akan membaca nilai default

yang telah diberika pada saat pemrograman, melainkan nilai yang diberikan

pengguna. Sebelum percobaan 2 dijalankan, tabel hasil dan tabel temporari harus

dibersihkan terlebih dahulu. Hal ini dilakukan dengan menekan tombol yang tersedia

untuk fungsi tersebut pada menu utama. Setelah tabel dibersihkan maka percobaan 2

dapat dilakukan. Dalam percobaan 2 ini dilakukan pengaturan nilai sebagai berikut :

a. Variabel IPK

1. Himpunan fuzzy yang dipilih adalah Baik

2. Nilai batas bawah = 3,4

3. Nilai tengah = 3,5

4. Nilai batas atas = 3,6

b. Variabel TOEFL

1. Himpunan fuzzy yang dipilih adalah Baik

2. Nilai batas bawah = 450

3. Nilai tengah = 500

4. Nilai batas atas = 550

c. Variabel ABSENSI

1. Himpunan fuzzy yang dipilih adalah Cukup

2. Nilai batas bawah = 75

3. Nilai tengah = 80

4. Nilai batas atas = 85

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 69: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

69

d. Variabel GAJI_ORTU

1. Himpunan fuzzy yang dipilih adalah Rendah

2. Nilai batas bawah = 2

3. Nilai tengah = 2.5

4. Nilai batas atas = 3

Setelah varibel-variabel fuzzy didefinisikan, maka proses fuzzifikasi dilakukan dan

dari proses ini dihasilkan data temporari sebagai mana terlihat pada Tabel 4.4.

Tabel 4.4 Tabel Temporari Percobaan 2

Tahapan selanjutnya adalah dengan memasukkan operator untuk query data

dari tabel Temporari ke tabel Hasil. Pada percobaan 2 ini akan dicoba dengan

memasukkan operator yang bervariasi. Yaitu :

1. Operator 1 = OR

2. Operator 3 = AND

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 70: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

70

3. Operator 2 = OR

Pada percobaan 2 ini yang diharapkan oleh pengguna adalah derajat

perekomendasian dengan kriteria mahasiswa seperti pada Gambar 4.2.

Gambar 4.1 Query Percobaan 2

Dari keseluruhan proses pada percobaan 2 ini, maka didapat hasil seperti

pada Tabel 4.6

Tabel 4.5 Tabel Hasil Percobaan 2

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 71: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

71

4.6 Analisa

Setelah percobaan 1 dan percobaan 2 dilakukan dan hasilnya berupa derajat

perkomendasian untuk calon mahasiswa penerima beasiswa berhasil didapatkan,

sehingga seorang mahasiswa calon penerima beasiswa dapat direkomendasikan

berdasarkan nilai derajat perekomendasian yang dihasilkan oleh aplikasi ini.

4.6.1 Analisa Percobaan 1

Pada percobaan 1, query yang diberikan kepada sistem adalah :

SELECT FROM mahasiswa WHERE (IPK=Istimewa OR TOEFL=Istimewa)

OR (ABSENSI=Baik OR GAJI_ORTU=Rendah)

Berdasarkan query tersebut, maka sistem akan memproses data yang ada pada tabel

TEMPORARI dengan tahapan sebagai berikut :

1. Nilai derajat keanggotaan pada kolom IPK (Istimewa) dioperasikan

dengan nilai derajat keanggotaan TOEFL (Istimewa). Karena nilai

derajat keanggotaan yang diambil sebagai hasil dari operator OR adalah

nilai yang terbesar, maka sistem akan mengambil nilai tersebut dan

memasukkannya ke dalam tabel TEMPORARI1 kolom DK.

2. Sama halnya seperti pada himpunan ABSENSI Baik dan GAJI_ORTU

Rendah dengan operator OR, maka nilai maksimal dari kedua himpunan

ini akan disimpan pada tabel TEMPORARI1 tetapi pada kolom DK1.

3. Pada tahapan selanjutnya, sistem telah memegang nilai derajat

keanggotaan untuk himpunan IPK Istimewa dan TOEFL Istimewa pada

kolom DK. Sedangkan nilai derajat keanggotaan untuk himpunan

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 72: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

72

ABSENSI Baik dan GAJI_ORTU Rendah dipegang oleh sistem untuk

masing-masing record pada kolom DK1.

4. Setelah nilai derajat keanggotaan pada kolom DK dan DK1 telah

terdefinisi, maka sistem melanjutkan pada tahapan selajutnya, yaitu

mengoperasikan nilai pada kolom DK dan DK1 dengan operator OR

serta menyimpan nilainya pada tabel TEMPORARI1 kolom

DK_HASIL.

5. Hasil akhir pada kolom DK_HASIL inilah yang dijadikan sebagai nilai

derajat perekomendasiaan yang diberikan oleh aplikasi.

Sebagai contoh, mahasiswa dengan NIM 020402087 memiliki data IPK =

3.14, TOEFL = 357, ABSENSI = 76, dan GAJI_ORTU = 2.7. Maka dari data

tersebut diperoleh nilai derajat keanggotaan untuk masing-masing variabel fuzzy

sebagai berikut :

1. Derajat keanggotaan IPK-nya pada himpunan Istimewa = 0.

2. Derajat keanggotaan TOEFL-nya pada himpunan Istimewa = 0.

3. Derajat keanggotaan ABSENSI-nya pada himpunan Absensi Baik = 0.

4. Derajat keanggotaan GAJI_ORTU-nya pada himpunan Rendah = 0.299.

Maka pada tahapan operasi kedua untuk mahasiswa ini diperoleh data sebagai

berikut :

1. Derajat keanggotaannya untuk himpunan IPK Istimewa dan TOEFL

Istimewa = 0 (DK).

�IPK U TOEFL = max (�IPK[0], �T0EFL[0])

= 0

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 73: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

73

2. Derajat keanggotaannya untuk himpunan ABSENSI Baik dan

GAJI_ORTU Rendah = 0 (DK1).

�ABSENSI U GAJI_ORTU = max (�ABSENSI[0], �GAJI_ORTU[0.299])

= 0.299

Sehingga derajat perekomendasian yang diberikan oleh sistem untuk

mahasiswa ini adalah :

�DK U DK1 = max (�DK[0], �DK1[0.299])

= 0.299

4.6.2 Analisa Percobaan 2

Pada percobaan 2, query yang diberikan kepada sistem adalah :

SELECT FROM mahasiswa WHERE (IPK=Baik OR TOEFL=Baik) OR

(ABSENSI=Cukup AND GAJI_ORTU=Sedang)

Berdasarkan query tersebut, maka sistem akan memproses data yang ada pada tabel

TEMPORARI dengan tahapan sebagai berikut :

1. Nilai derajat keanggotaan pada kolom IPK (Baik) dioperasikan dengan

nilai derajat keanggotaan TOEFL (Baik). Karena nilai derajat

keanggotaan yang diambil sebagai hasil dari operator OR adalah nilai

yang terbesar, maka sistem akan mengambil nilai tersebut dan

memasukkannya ke dalam tabel TEMPORARI1 kolom DK.

2. Sedangkan pada himpunan ABSENSI Cukup dan GAJI_ORTU Sedang

dengan operator AND, maka nilai terkecil dari kedua himpunan ini

yang diambil sebagai nilai derajat keanggotaannya, kemudian disimpan

di tabel TEMPORARI1 pada kolom DK1.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 74: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

74

3. Pada tahapan selanjutnya, sistem telah memegang nilai derajat

keanggotaan untuk himpunan IPK Baik dan TOEFL Baik pada kolom

DK. Sedangkan nilai derajat keanggotaan untuk himpunan ABSENSI

Cukup dan GAJI_ORTU Sedang dipegang oleh sistem untuk masing-

masing record pada kolom DK1.

4. Setelah nilai derajat keanggotaan pada kolom DK dan DK1 telah

terdefinisi, maka sistem melanjutkan pada tahapan selajutnya, yaitu

mengoperasikan nilai pada kolom DK dan DK1 dengan operator OR

serta menyimpan nilainya pada tabel TEMPORARI1 kolom

DK_HASIL.

5. Hasil akhir pada kolom DK_HASIL inilah yang dijadikan sebagai nilai

derajat perekomendasiaan yang diberikan oleh aplikasi.

Sebagai contoh untuk diamati secara khusus, diambil dari percobaan 2 ini

adalah seorang mahasiswa yang memiliki NIM 020402087 memiliki data berupa

nilai IPK = 3.14, nilai TOEFL = 357, persentase ABSENSI = 76, dan jumlah

GAJI_ORTU = 2.7. Maka dari data tersebut diperoleh nilai derajat keanggotaan

untuk masing-masing variabel fuzzy sebagai berikut :

1. Derajat keanggotaan IPK-nya pada himpunan Baik = 0.

2. Derajat keanggotaan TOEFL-nya pada himpunan Baik = 0.

3. Derajat keanggotaan ABSENSI-nya pada himpunan Cukup = 0.2.

4. Derajat keanggotaan GAJI_ORTU-nya pada himpunan Sedang = 0.59.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 75: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

75

Maka pada tahapan operasi kedua untuk mahasiswa ini, mekanisme

perhitungan fire strength yang dilakukan oleh aplikasi adalah seperti yang

dipaparkan di bawah :

1. Derajat keanggotaannya untuk himpunan IPK Istimewa dan TOEFL

Istimewa = 0 (DK).

�IPK U TOEFL = max (�IPK[0], �T0EFL[0])

= 0

2. Derajat keanggotaannya untuk himpunan ABSENSI Baik dan

GAJI_ORTU Rendah = 0 (DK1).

�ABSENSI � GAJI_ORTU = min (�CUKUP[0.2], �SEDANG[0.599])

= 0,2

Sehingga derajat perekomendasian yang diberikan oleh aplikasi melalui

proses perhitungan fire strength untuk mahasiswa ini adalah :

�DK U DK1 = max (�DK[0], �DK1[0.2])

= 0.2

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 76: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

76

BAB V

PENUTUP

4.7 Kesimpulan

Dari pengerjaan proyek Tugas Akhir ini dapat ditarik beberapa kesimpulan,

antara lain adalah :

1. Aplikasi berbasis Java dapat mengakses dan memanipulasi database

yang dibangun dengan MySQL server setelah dilakukan koneksi dengan

driver, konfigurasi, serta konversi tipe data yang tepat diantara

keduanya.

2. Seleksi berdasarkan sistem logika klasik yang tegas dan curam oleh

sistem database, dapat diubah menjadi seleksi yang menekankan pada

nilai derajat keanggotaan pada himpunan yang diacu.

3. Derajat perekomendasian yang diberikan oleh sistem ini hanya berasal

dari perhitungan nilai fire strength masing-masing variabel tanpa

menggunakan sistem inferensi fuzzy, tetapi walaupun demikian aplikasi

ini dapat dimanfaatkan untuk mendukung proses pengambilan

keputusan.

4. Pengguna harus mengetahui karakteristik dari operator-operator

himpunan fuzzy dalam menggunakan aplikasi ini. Karena dengan

memahami kerakteristik tersebut pengguna dapat memberikan

penekanan pada variabel fuzzy tertentu.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 77: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

77

4.8 Saran

1. Diharapkan untuk pengembangan lebih lanjut, sistem atau aplikasi ini

dapat menangani data dari tabel-tabel yang berelasi. Sehingga database

yang dibangun tidak perlu terpisah dan berdiri sendiri.

2. Untuk pengambilan keputusan yang lebih baik lagi diharapkan dapat

menggunakan metode kombinasi (hybrid). Yaitu antara metode fuzzy

dengan metode artificial intelligence yang lainnya. Misalnya jaringan

syaraf tiruan.

3. Dalam pengembangan lebih lanjut, diharapkan varibel-variabel fuzzy

yang diolah memiliki pembobotan yang dinamis. Sehingga aplikasi dapat

menentukan variabel yang menjadi prioritas dalam pengambilan derajat

perekomendasian. Misalnya untuk beasiswa prestasi, keputusan yang

diambil lebih ditekankan pada prestasi akademik dan untuk beasiswa

kurang mampu, lebih ditekankan pada kondisi ekonomi calon penerima

beasiswa.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 78: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

78

Daftar Pustaka

1. Sri Kusumadewi, 2003, “ Artificial Intelligence” , Graha Ilmu, Yogyakarta.

2. Thomas Sri Widodo, 2005, “ Sistem Neuro Fuzzy” , Graha Ilmu, Yogyakarta.

3. Yuniar Supardi, 2006, “ Java dan MySQL” , Elex Media Komputindo, Jakarata

4. Setiyo Cahyono, 2006, “ Pemrogramn Database dengan MySQL dan Java” ,

Informatika, Bandung.

5. Sri Hartati Wijono, B. Herry Suharto, Matius Soesilo Wijono, 2007,

“ Pemrograman GUI Swing Java dengan NetBeans 5” , Andi Yogyakarta.

6. Willem Siler, James J, Buckley, 2005, “ Fuzzy Expert System And Fuzzy

Reasoning” , John Wiley & Sons, Chichester, England.

7. J. Harris, 2006, “ Fuzzy Logic Application in Engineering Science” , Springer,

Dordrecht, Netherlands.

8. Timothy, J.Ross, 2004, “ Fuzzy Logic With Engineering Applications” , John

Wiley & Sons, Chichester, England.

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 79: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

79

Lampiran A Listing Porgram Koneksi Database /* * Database.java * * Created on March 26, 2008, 11:39 PM */ import java.sql.*; /** * * @author deddy */ public class Database extends javax.swing.JFrame { Connection con = null; Statement stmt = null; /** Creates new form Database */ public Database() { try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } initComponents(); } public ResultSet getResultData(){ ResultSet rs = null; try { rs = stmt.executeQuery("select * from mahasiswa"); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } return rs; } public void closeResultSet(ResultSet rs){ if(rs !=null){ try{ rs.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } } /** This method is called from within the constructor to

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 80: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

80

* initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); ButtonOk = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); ResultSet rs = getResultData(); jTable1.setModel(new DatabaseKastemisasi(rs)); closeResultSet(rs); jScrollPane1.setViewportView(jTable1); ButtonOk.setText("OK"); ButtonOk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonOkActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(ButtonOk)) .addContainerGap(15, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(ButtonOk) .addContainerGap(13, Short.MAX_VALUE)) ); pack(); }// </editor-fold> private void ButtonOkActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: setVisible(false); } private void formWindowClosing(java.awt.event.WindowEvent evt) {

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 81: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

81

// TODO add your handling code here: if (stmt != null){ try{ stmt.close(); } catch(SQLException e) { System.err.println("Error SQL: " + e.getMessage()); } } if (con!= null){ try{ con.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Database().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton ButtonOk; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; // End of variables declaration }

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 82: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

82

Lampiran B Listing Porgram Tabel Model /* * DatabaseKastemisasi.java * Created on March 26, 2008, 11:45 PM * To change this template, choose Tools | Template Manager * and open the template in the editor. */ import javax.swing.table.AbstractTableModel; import java.sql.*; import java.util.ArrayList; public class DatabaseKastemisasi extends AbstractTableModel{ private int colnum = 7; private int rownum; private String[] colNames = {"NIM", "NAMA", "IPK","TOEFL","ABSENSI","GAJI_ORTU","STATUS",}; private ArrayList<String[]> ResultSets; /** Creates a new instance of DatabaseKastemisasi */ public DatabaseKastemisasi(ResultSet rs) { ResultSets = new ArrayList<String[]>(); try { while(rs.next()){ String[] row = { rs.getString("NIM"), rs.getString("NAMA"), rs.getString("IPK"), rs.getString("TOEFL"), rs.getString("ABSENSI"), rs.getString("GAJI_ORTU"), rs.getString("STATUS"), }; ResultSets.add(row); } } catch(Exception e){ System.out.println("Exception in deddy1model"); } } public Object getValueAt(int rowindex, int columnindex){ String[] row = ResultSets.get(rowindex); return row[columnindex]; } public int getRowCount(){ return ResultSets.size(); } public int getColumnCount(){ return colnum; } public String getColumnName(int param){ return colNames[param]; } }

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 83: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

83

Lampiran C Listing Porgram Fuzzifikasi IPK private void FuzzifikasiButtonActionPerformed(java.awt.event.ActionEvent evt) { // Menghitung fuzzy IPK String s = ComboBoxHimpunanIpk.getSelectedItem().toString(); if (s.equals("Buruk")){ String med1 = FieldAIpk.getText(); String med2 = FieldBIpk.getText(); String max = FieldCIpk.getText(); double a = Double.parseDouble(med1); double b = Double.parseDouble(med2); double c = Double.parseDouble(max); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >=c){ double h = Buruk1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage());

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 84: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

84

} String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); // JOptionPane.showMessageDialog(this,"Data telah tersimpan"); } else if ( a<=x && x<=b ){ double h = Buruk2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if ( x>=b ){ double h = Buruk3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close();

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 85: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

85

con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} }else if(s.equals("Kurang")){ String min = FieldAIpk.getText(); String med = FieldBIpk.getText(); String max = FieldCIpk.getText(); double a = Double.parseDouble(min); double b = Double.parseDouble(med); double c = Double.parseDouble(max); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >= c ){ double h = Segitiga1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); }

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 86: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

86

catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if ( a<=x && x<=b ) { double h = Segitiga2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if( b<=x && x<=c ){ double h = Segitiga3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1);

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 87: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

87

stmt1.close(); con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} }else if(s.equals("Sedang")){ String min = FieldAIpk.getText(); String med = FieldBIpk.getText(); String max = FieldCIpk.getText(); double a = Double.parseDouble(min); double b = Double.parseDouble(med); double c = Double.parseDouble(max); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >= c ){ double h = Segitiga1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage());

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 88: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

88

} String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if ( a<=x && x<=b ) { double h = Segitiga2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if( b<=x && x<=c ){ double h = Segitiga3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } }

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 89: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

89

stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} } else if(s.equals("Baik")){ String min = FieldAIpk.getText(); String med = FieldBIpk.getText(); String max = FieldCIpk.getText(); double a = Double.parseDouble(min); double b = Double.parseDouble(med); double c = Double.parseDouble(max); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >= c ){ double h = Segitiga1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');";

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 90: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

90

stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if ( a<=x && x<=b ) { double h = Segitiga2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if( b<=x && x<=c ){ double h = Segitiga3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } } stmt.close(); con.close();

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 91: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

91

} catch(Exception e){System.out.println(e);} } else if(s.equals("Istimewa")){ String min = FieldAIpk.getText(); String med1 = FieldBIpk.getText(); String med2 = FieldCIpk.getText(); double a = Double.parseDouble(min); double b = Double.parseDouble(med1); double c = Double.parseDouble(med2); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >= c ){ double h = Istimewa1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close();

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 92: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

92

} else if ( a<=x && x<=b ) { double h = Istimewa2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if( b<=x && x<=c ){ double h = Istimewa3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} }

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 93: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

93

Lampiran D Listing Porgram Fungsi Keanggotaan public double Segitiga1(double a, double b, double c, double x){ return 0; }; public double Segitiga2(double a, double b, double c,double x){ return (x-a)/(b-a); }; public double Segitiga3(double a, double b, double c, double x){ return (c-x)/(c-b); }; public double Buruk1(double a, double b, double c, double x){ return 0; }; public double Buruk2(double a, double b, double c, double x){ return 1; }; public double Buruk3(double a, double b, double c, double x){ return (c-x)/(c-b); }; public double Istimewa1(double a, double b, double c, double x){ return 0; }; public double Istimewa2(double a, double b, double c, double x){ return (x-a)/(b-a); }; public double Istimewa3(double a, double b, double c, double x){ return 1; };

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 94: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

94

Lampiran E Listing Porgram Perhitungan Fire Strength private void OperatorKeduaActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: // DK dan DK1 javax.swing.JComboBox jcb = ( javax.swing.JComboBox) evt.getSource(); String s2 = (String) jcb.getSelectedItem().toString(); if (s2.equals("OR")){ try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT NIM,DK,DK1 FROM temporari1"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String nim = rs.getString("NIM"); //String nama = rs.getString("NAMA"); String dk = rs.getString("DK"); String dk1 = rs.getString("DK1"); double a = Double.parseDouble(dk); double b = Double.parseDouble(dk1); if ( a >= b){ Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String dk2 =String.valueOf(a); String sql4="UPDATE temporari1 SET DK_HASIL = '"+dk2+"' WHERE NIM = '"+nim+"';"; stmt1.executeUpdate(sql4);

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 95: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

95

stmt1.close(); con1.close(); } else if ( b >= a ){ Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String dk2 =String.valueOf(b); String sql5="UPDATE temporari1 SET DK_HASIL = '"+dk2+"' WHERE NIM = '"+nim+"';"; stmt1.executeUpdate(sql5); stmt1.close(); con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} } else if (s2.equals("AND")){ try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT NIM,DK,DK1 FROM temporari1"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String nim = rs.getString("NIM"); String dk = rs.getString("DK"); String dk1 = rs.getString("DK1"); double a = Double.parseDouble(dk); double b = Double.parseDouble(dk1); if ( a <= b){

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009

Page 96: Implementasi Fuzzy Query Pada Database Untuk Perekomendasian

96

Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String dk2 =String.valueOf(a); String sql6="UPDATE temporari1 SET DK_HASIL = '"+dk2+"' WHERE NIM = '"+nim+"';"; stmt1.executeUpdate(sql6); stmt1.close(); con1.close(); } else if ( b <= a ){ Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String dk2 =String.valueOf(b); String sql7="UPDATE temporari1 SET DK_HASIL = '"+dk2+"' WHERE NIM = '"+nim+"';"; stmt1.executeUpdate(sql7); stmt1.close(); con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} } }

Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009