CONSTRAINT BASIS DATA SEBAGAI FONDASI YANG KUAT

advertisement
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
Download