Prosiding Seminar Nasional Aplikasi Sains & Teknologi (SNAST) Periode III Yogyakarta, 3 November 2012 ISSN: 1979-911X CONSTRAINT BASIS DATA SEBAGAI FONDASI YANG KUAT DALAM PENGEMBANGAN SISTEM INFORMASI Suwanto Raharjo1 1 Jurusan Teknik Informatika, Institut Sains & Teknologi AKPRIND Yogyakarta Jl. Kalisahak No. 28, Kompleks Balapan, Yogyakarta E-mail: [email protected] ABSTRAK Database is play important roles in computer based information system. Almost computer based information system will used database to store the data and information. Relational database management system (RDBMS) is one of database management system widely used in information system to storing data. RDMS such as Oracle, MS SQL Server, PostgreSQL, DB2 and MySQL are well known database management system use in information system. Information system will collects, process and stores data from organization’s resources for many purposes that supports the management functions of organization. The strored data must be good, clean, correct and valid data, free from garbage to support the functional of information system, data validation is a choice that can be done. Data validation can be done into two approaches application software code or database constraints. Many information system will using application software code to validate the data, application software usually developed using PHP, Delphi, VB or others. Only fewer information system application use database constraints to validate data, the study will show benefit of using database constraints to protect un-correct data enter into a system Keywords: database, constraint, information system PENDAHULUAN Informasi merupakan sumber daya yang sangat penting dalam suatu organisasi, informasi dapat diibaratkan sebagai darah dalam tubuh manusia. Informati merupakan kekuatan dalam suatu organisi yang memainkan peranan yang penting. Informasi yang tepat adalah suatu pengetahuan kunci bagi manajemen untuk membuat keputusan yang tepat dalam suatu organisasi. Kualitas data yang baik sangat penting untk setiap organisasi untuk dapat dijadikan sebagai informasi yang berkualitas, hanya dengan data yang baik maka informasi yang baik dapat diraih. Basis data adalah koleksi dari data yang disimpan dalah sebuah format terstandar dan didesain untuk bisa dibagi pakai oleh banyak pemakai (Post, 2005). Basis data merupakan komponen yang penting dalam sebuah sistem informasi modern. Sebagian besar sistem informasi dewasa ini hampir semuanya menggunakan Relational Database Management System (RDBMS), Sistem Basis Data Relasional. Software RDBMS yang umum digunakan dalam sistem informasi adalah Oracle, Ms SQL Server, PostgreSQL, DB2, FirebirdSQL atau MySQL. Dalam RDBMS data disimpan dalam bentuk tabel yang dibuat dengan bahasa SQL, sebuah bahasa khusus yang digunakan untuk berkomunikasi dengan software RDBMS. Sebagai contoh sebuah tabel student(sid char(8) primary key, name varchar(35) NOT NULL, address varchar(100), age int) dapat dideskripsikan sebagai : Tabel student memiliki 4 kolom yakni sid,name,address dan age. Kolom sid memiliki tipe data char, name,address bertipe data varchar dan age dengan tipe data integer. Primary key pada tabel tersebut adalah sid dan kolom name tidak boleh berisi nilai null. Perintah SQL untuk membuat tabel student dapat dibuat dengan perintah SQL sebagai berikut : CREATE TABLE student ( sid CHAR(8) PRIMARY KEY, name VARCHAR(35) NOT NULL, address VARCHAR(100), age INT); B-347 Prosiding Seminar Nasional Aplikasi Sains & Teknologi (SNAST) Periode III Yogyakarta, 3 November 2012 ISSN: 1979-911X Tabel student di atas dapat dilihat sebagai sebuah wadah yang digunakan untuk menampung suatu data, dimana data dapat dimasukan dalam wadah tersebut sesuai dengan definisi dari tabel tersebut. Contoh isi dari tabel student tertampil pada tabel 1. Table 1. Tabel Student Sid name Address 12105123 Najwa Rashika 12105124 Neisya Reehanna age Jl Magelang Km 8 7 Mulungan Wetan 3 Tabel 1 hanya akan dapat menerima data sesuai dengan definisinya, sebagai contoh kolom age hanya akan dapat menerima nilai dengan tip data integer. Jika data non integer coba dimasukan dalam tabel tersebut maka data yang coba dimasukan dalam tabel kan ditolak dan akan muncul pesan error. INSERT INTO student VALUES (’12105125’,’Naufal Rasendriya’,’Jamal 9’,’twelve’); ERROR: invalid input syntax for integer: "twelve" Definisi dari tabel dapat digunakan untuk melakukan validasi dari data yang akan dimasukan dalam suatu tabel. Definisi tabel yang baik akan berkaibat pada baiknya data yang dimasukan. Definisi tabel yang dapat digunakan untuk menjaga integritas dari data disebut dengan basis data constraints, dimana constraints akan mendifinisikan aturan terhadap suatu kolom dalam tabel. PEMBAHASAN Salah satu peran basis data, yaitu sebagai sumber infromasi bagi Sistem Informasi Manajemen(SIM), mengimplikasikan bahwa database yang digunakan harus mampu memenuhi kebutuhan berbagai informasi (dan data) bagi para penggunanya, baik untuk saat ini maupun mendatang (Raharjo et al, . 2007). Kualitas sistem informasi merupakan faktor yang sangat penting bagi suatu organisasi, pemasukan data pada basis data akan mempengaruhi kualitas sisteminformasi. Performance dari sistem informasi bergantung pada 3 faktor (triad factors); (Rob and Coronel, 2009) (1) Desain basis data dan implementasinya (2) Desain aplikasi dan implementasi (3) Prosedur administastif Desain basis data merupakan faktor terpenting dari 3 faktor tersebut, sehingga desainer basis data perlu berhati-hati dalam hal ini. Constraint pada integritas basis data digunakan untuk meyakinkan validitas data, yang secara umum terdapat 3 tipe constraint yakni : (1) Constraint Entitas (2) Constraint Referensial (3) Constraint Domain Constraint basis data merupakan struktur yang dibuat oleh pengguna atau perancang basis data yang mencerimaikan tingkah laku dari suatu tabel dan kolom. Constraint dirancang pada saatmendefinisikan basis data dengan tujuan utama memproteksi validitas data. Constraint pertama dan kedua yang digunakan untuk menjaga inegritas entitas dan referensial sudag umum digunakan dalam perancangan basis data yakni dengan penggunaan kunci primer (primary key) dan kunci tamu (foreign key). Sedangkan tipe ke tiga yakni constraint domain masih hanya digunakan sampai dengan pemilihan tipe data yang tepat seperti contoh tabel di atas. Hampir semua penelitian yang membahas pembangunan sistem informasi dengan basis data relasional, perancangan basis datanya masih hanya menggunakan kunci primer, kunci tamu dan pemilihan tipe data. B-348 Prosiding Seminar Nasional Aplikasi Sains & Teknologi (SNAST) Periode III Yogyakarta, 3 November 2012 ISSN: 1979-911X Beberapa perancangan sistem informasi bahkan tidak menyinggung penggunaan constraint di level basis data seperti pada penelitian dengan judul Perancangan Aplikasi Sistem Manajemen Inventori Pemberkasan Surat Masuk dan Keluar di Politeknik POS Indonesia Sebagai penunjang Sistem Paperless (Rahayu, 2011). Penelitian dengan judul Perancangan Database Sistem Informasi Akutansi Menggunakan kombinasi REA model, ERD, dan normalisasi (Iskandar et al, 2012), Aplikasi Sistem Informasi Penjualan Pada Gerai (Outlet) Ponsel Berbasis Web (Suhartono et al, 2011) dan Analisis dan Perancangan Sistem Basis Data untuk Aplikasi Penerimaan Kas pada BINUS Business School dan BINUS International School (Chandra et al, 2011) juga tidak membahas secara detail bagaimana menjaga integritas basis data dengan constraint basis data. Validasi masukan (input validation) merupakan salah satu permasalahan yang dihadapi suatu aplikasi. Pada umumnya validasi masukan dilakukan melalui filterisasi oleh program aplikasi, namun apabila terjadi kesalahan dalam aplikasi memungkinkan validasi masukan ini menjadi titik awal pada masalah keamanan. Dalam basis data yang menggunakan RDBMS maka kesalahan dari validasi masukan dari program memungkinkan dilakukan explotiasi dengan menggunakan SQL injection. Akar penyebab dari SQL injection adalah ketidakcukupan validasi masukan (Halfond et al, 2006) (Scholte et al, 2012). Kerugian yang didapat dengan tidak cukupnya validasi masukan adalah dari mulai kesalahan data yang akan berakibat kesalahan informasi sampai dengan masalah keamanan data. Sebagai contoh sederhana misalkan dimiliki tabel siswa(nis CHAR(9)*,nama VARCHAR(30)), perintah SQL untuk membuat tabel di atas adalah : CREATE TABLE siswa (nis CHAR(9) PRIMARY KEY, nama VARCHAR(30)); Perintah tersebut akan terbentuk tabel siswa yang memiliki kunci primer nim dengan tipe data karakter(9) dan kolom nama dengan tipe data variabel karakter(30). Pemasukan data pada basis data dapat dilakuan secara langsung melalui console SQL dengan perintah INSERT seperti contoh berikut : INSERT INTO siswa VALUES (’201205101’,’Naufal Rasendriya A.R’); INSERT INTO siswa VALUES (’201205102’,’Najwa Rashika A.R’); INSERT INTO siswa VALUES (’201205103’,’Neisya Reehana A.R’); Data di atas adalah data yang diharapkan, namun dengan menggunakanconsole SQL memungkinkan juga dilakukan pemasukan data seperti berikut, INSERT INTO siswa VALUES (’201205104’,’sdgllsg 2414%^!#($@($&*4’); Sehingga isi tabel siswa adalah seperti tertampil pada tabel 2. Table 2 Tabel Siswa sid 201205101 201205102 201205103 201205104 name Naufal Rasendriya A.R Najwa Rashika A.R Neisya Reehana A.R sdgllsg 2414%^!#($@($&*4 Dari tabel 2 terlihat bahwa pada data terakhir yang diinputkan yakni data pada baris ke 4 terdapat nama siswa dengan data yang tidak benar. Nama siswa tersebut bisa diinputkan karena memungkinkan untuk dilakukan, dimana nama siswa pada bari ke 4 memenuhi syarat bertipe data variabel karakter. Pencegahan kesalahan masukan dapat melalui pembatasan karakter input melalui suatu program. Misalkan bahwa nama siswa diketahui hanya memuat karakter a sampai z ditambah karakter koma (,), titik (.) dan tanda kurang (-) maka dapat dibuat program untuk membatasi inputnya. Namun jika dilakukan dengan program maka input data ke tabel siswa masih akan dapat dilakukan secara langsung melakukan query INSERT ke tabel siswa tersebut, seperti contoh di atas. B-349 Prosiding Seminar Nasional Aplikasi Sains & Teknologi (SNAST) Periode III Yogyakarta, 3 November 2012 ISSN: 1979-911X Dalam ANSI SQL-92 terdapat constraint CHECK yang merupakan constraint paling fleksibel dan berguna (Melton and Simon, 1993) dan dapat digunakan untuk melakukan pembatasan seperti di masalah nama siswa tersebut. Namun sejak didefinisikan di SQL-92, penggunaan constraint CHECK masih sangat terbatas. Dengan menggunakan constraint CHECK input data yang dilakukan dimungkinkan untuk dipaksa mengikuti aturan yang ditetapkan. Misalkan pembatasan nama siswa dengan diketahui bahwa nama siswa adalah terdiri dari karakter a sampai z ditambah karakter koma (,), titik (.) dan tanda kurang (-) maka dengan constraint CHECK definisi tabel siswa di atas ditambahkan constraint tersebut seperti terlihat pada tabel III. Table 3 Diskripsi Tabel Siswa dengan Constraint CHECK Column | Type | Modifiers --------+-----------------------+----------nis | character(9) | not null nama | character varying(30) | Indexes: "siswa_pkey" PRIMARY KEY, btree (nis) Check constraints: "cek_nama" CHECK (nama::text ~* ’^[a-z]+$|^[a-z.,\- ]+[a-z]$’::text) Constraint CHECK pada tabel siswa di atas akan menolak semua input data pada kolom nama yang tidak memenuhi syarat yakni hanya terdiri dari karakter a sampai z ditambah karakter koma (,), titik (.) dan tanda kurang (-). Sebagai contoh misalkan akan diinputkan nama siswa adalah ”Jhoni 123?*!” dengan perintah INSERT langsung ke DBMS maka data tersebut akan ditolak seperti contoh berikut, INSERT INTO siswa VALUES (’201205105’,’Jhoni 123?*!’); ERROR: new row for relation "siswa" violates check constraint "cek_nama" Terlihat bahwa constraint CHECK menolak data yang diinputkan dan memberikan pesan kesalahan bahwa pada baris yang diiunputkan pada tabel siswa melanggar constraint cek nama. Pembatasan input data pada kolom bertipe data karakter dengan menggunakan constraint CHECK dapat memanfaatkan fasilitas regular expression atau pengenalan pola yang dikenal oleh software DBMS. Sebagai contoh yang lain pada tipe data karakter adalah pembatasan input format alamat email yang sudah memiliki ketetapan yakni nama pengguna diikuti tanda @ kemudian nama domain. Dengan menambahkan kolom email ke tabel siswa dan memberikan pembatasan pada kolom email maka diskripsi tabel siswa menjadi seperti tertampil pada tabel 4. Table 4 Diskripsi Tabel Siswa dengan Constraint email CHECK Table "public.siswa" Column | Type | Modifiers --------+-----------------------+----------nis | character(9) | not null nama | character varying(25) | not null email | character varying(25) | Indexes: "siswa_pkey" PRIMARY KEY, btree (nis) Check constraints: "cek_email" CHECK (email::text ~* ’^[a-z0-9._%-]+@[a-z0-9.-]+[.][a-z]+$’::text) "cek_nama" CHECK (nama::text ~* ’^[a-z]+$|^[a-z.,\- ]+[a-z]$’::text) Constraint CHECK pada kolom email tersebut akan menolak jika format email yang dimasukan tidak sesuai dengan format yang ditentukan, seperti contoh berikut, B-350 Prosiding Seminar Nasional Aplikasi Sains & Teknologi (SNAST) Periode III Yogyakarta, 3 November 2012 ISSN: 1979-911X INSERT INTO siswa VALUES (’201205105’,’Jhoni’,’Jhoni@yahoo’); ERROR: new row for relation "siswa" violates check constraint "cek_email" Selain pembatasan data pada kolom dengan tipe data karakter, constraint CHECK dapat diterapkan pada berbagai tipe data seprti integer, float, date dan lain sebagainya. Sebagai ilustrasi lain semisal adalah pembatasan tanggal lahir untuk pendaftaran siswa dengan menerapkan minimal umur tertentu atau tanggal lahir tertentu yang sering digunakan sebagai syarat memasuki sekolah tersebut. Dengan melakukan modifikasi tabel siswa di atas akan ditambahkan kolom tgl lahir yang dibatasi tanggal lahir siswa yang boleh mendaftar yakni yang memiliki tanggal lahir tanggal 1-7-2004 sampai dengan 1-72006. Deskripsi tabel siwa dengan penambahan kolom dan constraint tersebut menjadi seperti tertampil pada tabel 5 Table5 Diskripsi Tabel Siswa dengan Constraint di kolom tgl lahir Table "public.siswa" Column | Type | Modifiers -----------+-----------------------+----------nim | character(9) | not null nama | character varying(25) | not null email | character varying(25) | tgl_lahir | date | not null Indexes: "siswa_pkey" PRIMARY KEY, btree (nim) Check constraints: "cek_email" CHECK (email::text ~* ’^[a-z0-9._%-]+@[a-z0-9.-]+[.][a-z]+$’::text) "cek_nama" CHECK (nama::text ~* ’^[a-z]+$|^[a-z.,\- ]+[a-z]$’::text) "cek_umur" CHECK (tgl_lahir <= ’2006-07-01’::date AND tgl_lahir >= ’2004-07-01’::date) KESIMPULAN Memberikan pembatasan pada kolom suatu tabel akan dapat lebih menjamin keakuratan data dibandingkan dengan melakukan pembatasan masukan melalui aplikasi. Constraint CHECK yang merupakan standar SQL-92 dapat digunakan untuk melakukan pembatasan masukan pada sisis basis data. Pembatasan dengan constraint CHECK dapat dilakukan pada berbagai tipe data yang diberikan pada suatu kolom di suatu tabel. Pembatasan masukan dengan basis data disamping menjamin keakuratan data juga dapat meingkatkan keamanan data. Sebuah sistem informasi yang memiliki basis data yang baik akan menjadi pondasi yang kuat bagi pengembangan sistem informasi tersebut. DAFTAR PUSTAKA Chandra , V., P Rawira , A., And O Ktovianus, S. 2011. Analisis Dan Perancangan Sistem Basis Data Untuk Aplikasi Penerimaan Kas Pada Binus Business School Dan Binus International School. In Skripsi. Universitas Bina Nusantara. Halfond, W., V Iegas, J., And O Rso, A. 2006. A Classification Of Sql-Injection Attacks And Countermeasures. In Proceedings Of The Ieee International Symposium On Secure Software Engineering. Ieee, 65–81. Iskandar , M., H Enry, C., And A Ulia , A. 2012. Perancangan Database Sistem Informasi Akuntans Menggunakan Kombinasi Rea Model, Erd, Dan Normalisasi Data. Bina Ekonomi 15, 2. Melton, J. And S Imon, A. 1993. Understanding The New Sql: A Complete Guide. The Morgan Kaufmann Series In Data Management Systems. Morgan Kaufmann Publishers. B-351 Prosiding Seminar Nasional Aplikasi Sains & Teknologi (SNAST) Periode III Yogyakarta, 3 November 2012 ISSN: 1979-911X P Ost, G. V. 2005. Database Management System. Mcgraw-Hill. Raharjo, S., S Utanta , E., And U Tami , E. 2007. Analisis Aspek-Aspek Kualitas Schema Database (Studi Kasus Pada Database Akademik Ista Yogyakarta). In Seminar Nasional Teknologi 2007 (Snt 2007). Rahayu, W. 2011. Perancangan Aplikasi Sistem Manajemen Inventori Pemberkasan Surat Masuk Dan Keluar Di Politeknik Pos Indonesia Sebagai Penunjang Sistem Paperless. In Seminar Nasional Aplikasi Teknologi Informasi (Snati). Rob, P. And C Oronel , C. 2009. Database Systems: Design, Implementation, And Management. Course Technology. S Cholte , T., B Alzarotti , D., And K Irda , E. 2012. Quo Vadis? A Study Of The Evolution Of Input Validation Vulnerabilities In Web Applications. Financial Cryptography And Data Security, 284–298. Suhartono, D., Fatchurrochim , A., And I Snanto, R. 2011. Aplikasi Sistem Informasi Penjualan Pada Gerai (Outlet) Ponsel Berbasis Web. In Skripsi. Jurusan Teknik Elektro Fakultas Teknik Undip. B-352