1
PENDAHULUAN Latar Belakang Jumlah pengguna data dan informasi dengan menggunakan sarana IT (Information Technology) semakin meningkat dari hari ke hari. Oleh karena itu perlu suatu penanganan yang sangat cepat dalam hal pengelolaan data dan informasi. Untuk memberikan kemudahan bagi pengguna dalam mendapatkan sejumlah data yang sangat besar, direkomendasikan suatu alat, yang mampu memudahkan untuk mendapatkan data. Alat tersebut yaitu sistem database. Data bisa dibedakan menjadi dua: yaitu crisp dan fuzzy. Selama ini, pengolahan data dalam sistem database masih bersifat crisp, serta belum mendukung representasi fuzzy, maka diperlukan suatu alat untuk bisa mengolah data yang bersifat fuzzy. Data atau informasi yang bersifat fuzzy dapat memiliki lebih dari satu makna yang tidak dapat diselesaikan dengan pemrosesan logika biasa, sehingga perlu suatu perangkat yang mampu mengekspresikan ketidakpastian tersebut. Sebagai contoh, jika ingin dikatakan bahwa seseorang berbadan besar, maka hal tersebut tidak dapat didefinisikan secara pasti, berapa kilogram berat badan tersebut sehingga bisa dikatakan besar. Untuk mengungkapkan ketidakpastian tersebut secara matematis dapat digunakan teori gugus fuzzy, yaitu gugus yang menyatakan keanggotaan setiap elemennya dengan nilai derajat pada suatu selang tertentu. Tujuan Tujuan dari penelitian ini adalah membangun aplikasi untuk memudahkan pengambilan data dengan fuzzy query yang terekam dalam RDBMS. Ruang Lingkup Ruang lingkup penelitian ini dibatasi pada: 1. Mengimplementasikan fuzzy query pada database relasional. 2. Derajat keanggotaan untuk data direpresentasikan dengan bentuk segitiga (triangular), trapesium (trapezoidal). 3. Data yang digunakan merupakan data hipotik. 4. Pemilihan field pada query hanya 1 buah. 5. Non multi-attribute query.
TINJAUAN PUSTAKA Database Database adalah sekumpulan data atau entitas (beserta deskripsinya) yang berhubungan secara logika, dibuat untuk memenuhi kebutuhan informasi pada suatu pengorganisasian data dengan bantuan komputer yang memungkinkan data dapat diakses dengan mudah dan cepat. Dalam hal ini pengertian akses dapat mencakup perolehan data maupun manipulasi data seperti menambah serta menghapus data (Connoly 2002). Entitas adalah sebuah objek (orang, tempat atau benda, konsep atau kejadian) yang akan direpresentasikan dalam database. Tipe entitas adalah sebuah objek atau konsep yang didefinisikan oleh perusahaan, memiliki keberadaan yang tidak terikat, merupakan representasi dari sekumpulan objek yang ada pada dunia nyata dengan properti-properti yang sama. Model Entity-Relationship (ER) merupakan model data konseptual pada high level (secara umum) yang dikembangkan oleh Chen (1976) untuk memfasilitasi desain database (Connoly 2002). Atribut adalah properti yang menjelaskan beberapa aspek dari objek yang akan disimpan. Candidate key adalah satu atau sekumpulan atribut yang mengidentifikasikan entitas secara unik. Primary key adalah candidate key yang dipilih untuk mengidentifikasikan tipe entitas secara unik. Foreign key adalah atribut yang digunakan untuk menghubungkan satu relasi (tabel) dengan relasi (tabel) yang lainnya (Connoly 2002). Relational database Dalam model relasional, relasi digunakan untuk memegang informasi tentang objek-objek yang akan direpresentasikan dalam database. Relasi direpresentasikan dalam Tabel 2 dimensi yaitu baris dan kolom. Baris (tuple) berkorespondensi pada record tunggal, sedangkan kolom berkorespondensi dengan atribut.dalam database. Relasi direpresentasikan dalam tabel 2 dimensi yaitu baris dan kolom. Baris (tuple) berkorespondensi pada rekord tunggal, sedangkan kolom berkorespondensi dengan atribut. Domain yaitu tipe data yang menjelaskan nilai yang mungkin muncul untuk tiap kolom.
2
Domain bisa berbeda untuk tiap-tiap atribut. Domain yaitu tipe data yang menjelaskan nilai yang mungkin muncul untuk tiap kolom. Domain bisa berbeda untuk tiap-tiap atribut. Relationship antara relasi, atribut dan domain bisa dilihat pada Gambar 1.
Gambar 1 Relationship antara relasi, atribut dan domain Notasi model relasional: • R(A1,A2,…,An) merupakan skema Relasi R berderajat n • t=
, merupakan tuple berderajat n pada Relasi R ; vi adalah nilai yang berkorespondensi dengan atribut Ai - t[Ai] dan t.Ai merupakan nilai vi pada t untuk atribut Ai - t[Au, Aw,…,Az] dan t.(Au, Aw,….,Az) merupakan nilai (vu, vw, …,vz) pada t untuk atribut yang sesuai • Q, R, S menotasikan nama relasi • t, u, v menotasikan tuple Sebuah relasi harus memenuhi hal-hal berikut : • Sebuah relasi harus mempunyai nama yang berbeda dari semua nama relasi yang ada di database. • Setiap sel dari relasi mengandung tepat satu nilai yang atomik. Nilai atomik adalah nilai atribut yang tidak dapat dibagi lagi menjadi aribut yang lebih sederhana. • Setiap atribut harus mempunyai nama yang berbeda. • Semua nilai atribut berasal dari domain yang sama. • Tiap tuple berbeda (tidak ada penggandaan). • Urutan atribut bukan merupakan hal yang penting. • Secara teori, urutan tuple juga bukan merupakan hal yang penting. (Namun, dalam
prakteknya, urutan memberikan dampak pada efisiensi peng-aksesan tuple). DDL (Data Defition Language) dan DML (Data Manipulation Language) Database Management System (DBMS) merupakan perantara bagi pemakai dengan database dalam disk. Cara berinteraksi atau berkomunikasi antara pemakai dengan database tersebut diatur dalam suatu bahasa khusus yang ditetapkan oleh perusahaan pembuat DBMS. Bahasa tersebut dapat kita sebut sebagai bahasa database yang terdiri atas sejumlah perintah (statement) yang diformulasikan dan dapat diberikan user dan dikenali atau diproses oleh DBMS untuk melakukan suatu aksi atau pekerjaan tertentu. Sebuah bahasa database biasanya dapat dipilah ke dalam dua bentuk, yaitu (Fathansyah 2004): • DDL (Data Definition Language) Struktur atau skema database yang menggambarkan atau mewakili disain database secara keseluruhan dispesifikasikan dengan bahasa khusus disebut Data Definition Language. Dengan bahasa inilah kita dapat membuat tabel baru, membuat indeks, mengubah tabel, menentukan struktur penyimpanan tabel, dan sebagainya. • DML (Data Manupulation Language) DML merupakan bentuk bahasa database yang berguna untuk melakukan manipulasi dan pengambilan data pada suatu database. Manipulasi data dapat berupa: a. Penyisipan atau penambahan data baru ke database. b. Penghapusan data dari suatu database. c. Pengubahan data dari suatu database. Query Query adalah permintaan untuk mengakses atau melacak informasi tertentu dalam suatu database. Untuk melakukan suatu query diperlukan suatu bahasa query. Contoh bahasa query adalah SQL (Structure Query Language). Structure Query Language SQL (Structured Query Language) adalah bahasa yang dipergunakan untuk mengakses data dalam database relasional. Bahasa ini secara defacto adalah bahasa standar yang digunakan dalam manajemen database
3
relasional. Saat ini hampir semua server database yang ada mendukung bahasa ini dalam manajemen datanya. Struktur utama suatu SQL berisi 3 klausa (Korth & Silberschatz 1991, Bosc & Pivert 1995) yaitu: 1. Klausa Select, menyatakan operasi proyeksi, yaitu menentukan atribut-atribut dalam relasi yang akan dipilih. 2. Klausa From, menyatakan operasi cartesian product dari satu atau lebih relasi 3. Klausa Where, menyatakan predikat yang harus dipenuhi oleh tuple yang ada dalam klausa From. Pemakaian dasar SQL adalah sebagai berikut: 1. Mendefinisikan tabel CREATE TABLE [NAMA_TABLE] ([DEFINISI_TABLE]) 2. Menyimpan data INSERT INTO [NAMA_TABLE] ([DAFTAR_FIELD]) VALUES ([DAFTAR_NILAI]) 3. Mengambil data SELECT [DAFTAR_FIELD] FROM [NAMA_TABLE] [KONDISI] 4. Menghapus data DELETE FROM [NAMA_TABLE] [KONDISI] Operasi SELECT digunakan untuk memilih sebuah subset tuple-tuple dari sebuah relasi yang memenuhi pilihan. Pada umumnya, operasi SELECT ditunjukkan oleh : σ (R) , dimana “σ σ” (sigma) digunakan untuk menetapkan operator SELECT dan adalah berupa ekspresi boolean yang ditetapkan pada atribut dari relasi R. Perlu diingat bahwa R pada umumnya adalah sebuah ekspresi aljabar relasional yang hasilnya adalah sebuah relasi. Ekspresi yang paling sederhana dari operasi SELECT adalah sebuah nama dari sebuah relasi database. Relasi yang dihasilkan dari operasi SELECT mempunyai atribut yang sama, sebagai R. Ekspresi boolean yang ditetapkan dalam terbentuk dari sejumlah klausa dengan bentuk sebagai berikut : , atau di mana adalah nama sebuah atribut dari R, biasanya adalah salah satu dari operatoroperator seperti “=”,”<”,”≥“, “≤” dan “≠”, dan
adalah sebuah nilai konstan dari atribut domain. Klausa-klausa dapat mempunyai relationship yang berbeda-beda dengan operator-operator boolean AND, OR, dan NOT untuk membentuk kondisi pilihan yang umum. Operator SELECT adalah unary, maka dari itu, operator SELECT digunakan untuk sebuah relasi tunggal. Lebih dari itu, operasi pemilihan digunakan untuk tiap-tiap tuple secara individu. Bahkan, kondisi-kondisi pilihan tidak dapat menggunakan lebih dari satu tuple. Jumlah tuple dari relasi yang dihasilkan selalu lebih kecil atau sama dengan jumlah tuple pada R, sehingga |σc (R)| ≤ |R| untuk setiap kondisi C. Bagian dari tuple-tuple yang dipilih oleh sebuah kondisi pilihan disebut sebagai selectivity dari kondisi. Sebagai contoh, terdapat tabel STAF pada Tabel 1. Tabel 1 Data STAF Nama Luminta Adriansyah Hermanto Linda
StaffID S04001 S99002 M05003 M01001
Posisi Manager Direktur ME ME
Status FT FT PT FT
Gaji 8000000 20000000 500000 500000
Contoh select : • Cari semua staf yang statusnya adalah FT → σ (status=FT)(STAF), di mana: σ (baca:sigma) : merupakan simbol dari relation algebra untuk select. (status=FT) : mengecek status FT. STAF : relasi staff dalam database. hasil disajikan pada Tabel 2. Tabel
2 Hasil operasi berdasarkan status
Nama Luminta Adriansyah Linda
StaffID S04001 S99002 M01001
Status FT FT FT
select
STAF
Gaji 8000000 20000000 500000
Cari semua staf ME berstatus FT → σ (status=FT) AND (posisi=ME)STAF), di mana: : merupakan simbol dari σ (baca:sigma) relation algebra untuk select. (status=FT) AND : mengecek status FT dan (posisi=ME) posisi ME STAF : relasi STAF dalam database. •
Hasil disajikan pada Tabel 3.
4
Tabel 3 Hasil operasi select STAF berdasarkan status dan posisi Nama StaffID Posisi Status Gaji Linda M01001 ME FT 500000 Sifat-sifat select : • Komutatif
σ =σ
Sebagai contoh, derajat keanggotaan dari elemen x dalam area A diekspresikan oleh:
µ A ( x1 ) = 1 µ A ( x3 ) = 0.3
µ A ( x 2 ) = 0.8 µ A ( x4 ) = 0 ,
µ merupakan
(cond1)(
σ (cond2)(R)) σ (cond1)(R))
(cond2)(
• Yang berurutan dapat dikombinasikan menjadi σ (cond1)( σ (cond2)(R))= σ (cond1) AND (cond2)(R). Operasi select juga berhubungan dengan operasi project. Project merupakan pemilihan (select) subset kolom tertentu (X) dari relasi R. Pada umumnya, operasi project ditunjukkan oleh: ∏ X(R) = {t[X] : t ∈ R} Contoh project : • Posisi apa saja yang sudah terisi ? ∏ posisi (STAF), hasilnya adalah : Manager, Direktur, ME, ME. di mana: : merupakan simbol dari relation ∏ algebra untuk project posisi : memilih nilai-nilai dari atribut posisi STAF : relasi STAF dalam database Bilangan fuzzy Suatu nilai numerik dapat dinyatakan secara tidak persis (fuzzy) seperti nilai kebahasaan (linguistic) ’baik’, ’buruk’, dan lain-lain. Nilai-nilai kebahasaan tersebut merupakan contoh bilangan fuzzy. Bilangan fuzzy berkaitan dengan konsep nilai pendekatan atau selang, yaitu bilanganbilangan yang dekat ke suatu bilangan real tertentu atau yang berada pada suatu selang bilangan real tertentu (Klir & Bo 1995). Gugus fuzzy Gugus fuzzy pertama kali diperkenalkan oleh Prof. L.A. Zadeh dari Barkeley pada tahun 1965. Gugus fuzzy merupakan pengembangan dari gugus biasa. Teori gugus fuzzy mendefinisikan derajat di mana elemen x dari gugus universal X berada (tercakup) di dalam gugus fuzzy A. Fungsi yang memberikan derajat terhadap sebuah elemen mengenai keberadaannya dalam sebuah gugus disebut fungsi keanggotaan. Dalam kasus ini, anggota dari gugus X adalah elemen x.
fungsi keanggotaan yang memberikan derajat keanggotaan pada suatu selang tertentu, yaitu selang [0,1]. Tulisan subscript di sebelah µ yaitu A menunjukkan bahwa µ A adalah fungsi keanggotaan dari A (Marimin 2002). Himpunan fuzzy Himpunan fuzzy (fuzzy sets) merupakan perangkat yang tepat untuk mengekspresikan ke-ambiguity-an. Himpunan fuzzy merupakan media komunikasi yang berbicara mengenai logika alami dari kompleksitas di antara manusia dan pengetahuan sosial (Marimin 2002). Himpunan fuzzy dan fungsi keanggotaannya didefinisikan sebagai berikut: ”Jika X adalah koleksi dari objek-objek yang dinotasikan sebagai x, maka pasangan nilai fuzzy A dalam X adalah himpunan dari pasangan nilai A=
{(x, µ (x )) x ∈ X }, A
di mana µ A disebut sebagai fungsi keanggotaan untuk himpunan fuzzy A. Fungsi keanggotaan tersebut memetakan setiap elemen dari X ke sebuah derajat keanggotaan dengan nilai antara 0 dan 1” (Jang et.al. 1997). Fungsi keanggotaan Fungsi keanggotaan (membership function) adalah suatu kurva yang menunjukkan pemetaan titik-titik input data ke dalam nilai keanggotaanya (sering juga disebut derajat keanggotaan) yang memiliki interval antara 0 sampai 1 (Kusumadewi 2002). Misalkan dibuat himpunan berat badan orang. Kata BERAT menunjukkan derajat seberapa besar orang dikatakan berat. Dengan menggunakan himpunan crisp, misalkan orang dikatakan berat jika memiliki berat badan di atas 60 kg. Secara tegas dikatakan bahwa orang yang mempunyai berat badan di atas 60 kg dikatakan berat dengan nilai keanggotannya µ = 1. Sebaliknya, jika berat badan kurang dari atau sama dengan 60 kg, secara tegas orang tersebut dikatakan tidak berat dengan µ =0. Hal ini menjadi tidak adil,
5
karena untuk orang dengan berat badan 60,1 kg dikatakan berat sedangkan 60 kg dikatakan tidak berat. Dengan menggunakan himpunan fuzzy, kita bisa membuat suatu fungsi keanggotaan yang bersifat kontinyu. Orang yang memiliki berat 55 kg sudah mendekati berat, artinya dia dikatakan berat dengan µ =0,75. Dilain pihak, orang yang memiliki berat badan 43 kg, memang dinyatakan kurang berat, artinya dia dikatakan berat dengan µ =0,2. Grafik fungsi keanggotaan berat badan ideal dapat dilihat pada Gambar 2. 1 0.9
µ( A∩ B ) (u )
3.
:
derajat keanggotaan dari elemen u yang merupakan irisan area A dan B menggunakan operasi min(minimum).
Gabungan pada dua buah gugus fuzzy, yaitu gugus fuzzy A gabungan B, didefinisikan dengan fungsi keanggotaan sebagai berikut: µ ( A∪ B ) (u ) = max µ ( A ) (u ), µ ( B ) (u ) ,
(
)
di mana:
µ ( A ) (u )
:
derajat keanggotaan elemen u dalam area A.
µ( B ) (u )
:
µ ( A∪ B ) (u )
:
derajat keanggotaan dari elemen u dalam area B derajat keanggotaan dari elemen u yang merupakan gabungan area A dan B menggunakan operasi max(maximum).
dari
0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0
0
20
40
60
80
100
120
Gambar 2 Fungsi keanggotaan berat badan ideal Operasi gugus fuzzy Seperti pada gugus biasa, operasi-operasi terhadap gugus, yaitu komplemen (complement), gabungan (union) dan irisan (intersection) juga terdapat pada suatu gugus fuzzy. 1. Komplemen suatu gugus fuzzy A, dinotasikan sebagai A , didefinisikan dengan fungsi keanggotaan sebagai berikut : µ A (u ) = 1 − µ A (u ), u ∈ U , di mana: µ A (u ) : derajat keanggotaan dari elemen u pada area A
µ A (u )
:
derajat keanggotaan dari elemen u yang bukan area A
2. Irisan pada dua buah gugus fuzzy, yaitu gugus fuzzy A dan B, didefinisikan dengan fungsi keanggotaan sebagai berikut : µ ( A∩ B ) (u ) = min µ ( A ) (u ), µ ( B ) (u ) ,
(
)
di mana: : derajat keanggotaan dari elemen u pada area A
µ A (u )
µ B (u )
:
derajat keanggotaan dari elemen u pada are B
Fuzzy database Fuzzy database didefinisikan sebagai perluasan database relasional yang mengizinkan nilai atribut fuzzy dan nilai kebenaran fuzzy. Fuzzy database mengandung relasi-relasi: sebuah relasi R (t1,……,tn) dalam Cartesian product P1xP2x….xPn; di mana tiap Pi merupakan sekumpulan himpunan fuzzy ti yang berada pada atribut domain Di ( 1 ≤ i ≤ n ). Dalam fuzzy database, atributatribut kunci merupakan nilai yang bukan fuzzy. Dalam notasi, himpunan-himpunan fuzzy diidentifikasi dengan fungsi keanggotan yang representatif; sebagai contoh, ti yang dinotasikan sebuah fungsi keanggotaan (Takahashi 1993) Nilai-nilai atribut seperti umur mempunyai nilai non-fuzzy pada database relasional, sedangkan nilai atribut pada fuzzy database didefinisikan sebagai predikat fuzzy seperti “muda”, “sekitar 40-an”. Sebagai contoh, nilai atribut fuzzy pada “umur Dr. X adalah muda” diekspresikan sebagai sebaran kemungkinan P (umur X) = muda; “muda” dinotasikan sebagai himpunan fuzzy yang merepresentasikan predikat fuzzy “muda”. Nilai atribut tersebut diidentifikasi dengan himpunan fuzzy seperti “muda”. Nilai kebenaran (truth value) dari beberapa tuple adalah 1 (=benar) atau 0 (=salah) pada database relasional; nilai kebenaran pada beberapa tuple ditentukan pada predikat fuzzy seperti “0.7” dan
6
“mendekati benar” pada fuzzy database. Sebagai contoh, sebuah tuple t yang menegaskan pernyataan fuzzy: “sangat benar bahwa Dr. X lebih muda dari umur 20-an”. Nilai kebenaran diekspresikan sebagai sebaran kemungkinan P[T(t)]=N; T(t) dinotasikan sebagai nilai kebenaran dari t dan T dinotasikan sebagai himpunan fuzzy yang merepresentasikan predikat “sangat benar”. Dengan begitu nilai kebenaran T(t) diidentifikasikan dengan himpunan fuzzy, misal N pada z ∈ [0.1]; nilai z ∈ [0.1] mempunyai arti sebagai berikut: 1. z=0 berarti bahwa tuple t secara tepat salah. 2. 0 , ≤ , ≥ ) yang digunakan pada bahasa-bahasa query pada database relasional. 2. Fuzzy database mengizinkan himpunanhimpunan fuzzy sebagai nilai kebenaran T(t), t ∈ R; nilai kebenaran T(r) tupletuple yang dihasilkan r diturunkan dari T(r) pada tuple-tuple asal t ∈ R, atau dihitung sebagai kombinasi pada Cartesian product atau Projection T (t) pada tuple-tuple asal t ∈ R. Fuzzy query Dalam query konvensional, sintaks SQL dituliskan sebagai berikut : select (atribut) from (relasi) where (condition). Dalam query tersebut kita memilih tuple-tuple hasil Cartesian product dari relasi-relasi yang dibutuhkan dan memproyeksikan mereka ke atribut-atribut yang lebih spesifik. Dalam query yang bersifat fuzzy, formulanya adalah sebagai berikut: select [n | t |n. t] (atribut) from (relasi) where (fuzzy condition)
di mana (relasi) merupakan daftar relasi biasa (bersifat crisp), dan (fuzzy condition) yang merupakan kondisi dasar fuzzy atau boolean pada saat yang sama (Bosc 1995). • Fuzzy predicates Setiap predikat direpresentasikan oleh fungsi keanggotaan pada domain yang berlaku. Anggap predikat P diaplikasikan untuk elemen-elemen individu pada X, di mana P: X → [0, 1], kondisi fuzzy sederhana yang biasa digunakan adalah “muda”, “murah”, “sekitar 40” dsb (Tahani 1977). SQL yang terbentuk yaitu: Select tipe, harga From data_hp Where harga is murah • Fuzzy quantifiers Fuzzy quantifier mengizinkan kita unrtuk mengekspresikan quantity fuzzy untuk nilai pendekatan (approximate value). Fuzzy quantifiers dapat terbagi menjadi absolute atau relative: 1. Absolute quantifiers mengekspresikan kuantitas pada jumlah total, contoh: ”lebih dari pada 10”, “closed to 100”. 2. Relative quantifiers mengekspresikan pengukuran pada jumlah total elemen yang memenuhi kondisi pasti yang bergantung pada jumlah total elemenelemen yang mungkin. Tipe quantifier ini digunakan dalam ekspresi antara lain:”the majority”, “the minority”, “little of”, “about half of”, dan lain sebagainya.
METODOLOGI Tahapan penelitian Penelitian ini dilakukan dengan mengikuti beberapa tahapan, yaitu: perencanaan, analisis, desain, implementasi, dan pengujian. Tahapan penelitian disajikan pada Gambar 3.
Gambar 3 Tahapan penelitian