Implementasi Constraint Untuk Menjamin Integritas Data Dalam Basis Data

Implementasi Constraint Untuk Menjamin Integritas Data Dalam Basis Data

BAB 1 PENDAHULUAN

                Data adalah sesuatu yang mewakilkan objek dan peristiwa yang memiliki arti sangat penting bagi pemakai (user) . Data adalah fakta yang dapat disimpan dan memiliki arti, sehingga dapat disimpulkan bahwa data adalah fakta yang terjadi atau representasi dunia nyata,  memiliki arti  dan dapat disimpan serta dapat diatur sedemikian rupa sehingga dapat menjadi sebuah form yang dapat digunakan untuk berbagai tujuan.

                Dapat dilihat dari definisi diatas data sangatlah krusial, apabila kita salah memasukan data atau membaca data maka efeknya akan sangat besar, karena data merupakanan respresentasi dunia nyata. Untuk menjamin keabsahan data maka diperlukan sebuah data yang terintegritas. Dalam basis data integritas data mengacu kepada menjaga dan memastikan akurasi dan konsistensi data yang disimpan, ditambahkan maupun digunakan. Rusaknya integritas data diantara lain disebabkan oleh :

  1. Pengelolaan data yang tidak sesuai syarat

Dapat terjadi saat memasukan,memodifikasi maupun menghapus data yang tidak sesuai dengan syarat.

  1. Kegagalan Sistem

Kerusakan data akibat proses yang terinterupsi (system down, aplikasi crash, dll).

  1. Interaksi antar user

Data yang rusak atau tercampur akibat akses secara bersamaan dari user pada suatu data

                Data yang sahih (valid)  menjadi syarat wajib bagi basis data yang handal. Dalam praktik penggunaan basis data, berbagai sebab dapat mengakibatkan rusaknya konsistensi data, maka dari itu perlu diambil langkah untuk menjaga integritas data salah satunya dengan menentukan Constrtaint atau batasan.

BAB 2 TINJAUAN PUSTAKA

Constraint/ batasan dalam database pada dasarnya adalah pembatasan nilai-nilai yang  diperbolehkan untuk diisikan dalam sebuah kolom atau kolom-kolom yang terdapat dalam sebuah tabel. Dengan menerapkan batasan-batasan dalam sebuah tabel maka dapat dipastikan bahwa hanya data-data yang sesuai dengan batasan tersebut saja yang dapat di sikan dalam tabel tersebut. Fungsi utama dari penerapan batasan-batasan/ constraint dalam sebuah tabel adalah untuk menjamin konsistensi dan integritas data-data yang diisikan dalam sebuah tabel. Beberapa waktu yang lalu sebelum basis data berkembang seperti saat ini, banyak programmer dan Database  Administrator (DBA) menerapkan validasi data pada sisi client/ program aplikasi dantidak pada sisi pemrograman servernya. Tentunya hal ini sangat memerlukan keahlian pemrograman client yang cukup baik dari seorang programmer jika ingin menerapkan validasi yang cukup ketat untuk setiap data-data yang nantinya akan diisikan oleh seorang user dari sisi antarmuka aplikasi clientnya. Contohnya adalah dengan menggunakan visual basic seorang programmer akan membuat listing program tambahan untuk melakukan pengecekan apakah seorang user sudah mengisikan datanya sesuai dengan yang seharusnya diatur dalam business rulesnya. Seiring dengan berkembangnya database, maka saat ini banyak vendor/ perusahaan pembuat aplikasi database seperti Oracle.

Microsoft mulai membuat Database Management System (DBMS) Server yang didalamnya terdapat fitur-fitur yang dapat melakukan validasi terhadap data-data yang dapat diisikan pada sisi server dan bukan lagi pada sisi aplikasi client seperti yang selama ini digunakan oleh programmer. Fitur tersebut disebut dengan constraint. Berikut adalah beberapa contoh constraint yang terdapat dalam produk DBMS, yaitu: PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL. Tentunya jenis-jenis constraint tersebut dapat berbeda untuk masing-masing DBMS yang ada di pasaran saat ini.  Pada oracle Constraint  dapat dideklarasikan dengan dua cara yaitu:

  • Sebagai bagian dari definisi pada sebuah kolom atau atribut. Ini disebut sebagai in-line
  • Sebagai bagian dari definisi tabel yang di sebut out-of-line.

Kedua cara tersebut dapat dilakukan pada seluruh deklarasi constraint, kecuali constraint NOT NULL yang harus di deklarasikan secara in-Line.

Tipe- tipe constraints :

Constraint

Keterangan

NOT NULL

Menentukan suatu kolom tidak boleh berisi NULL.

UNIQUE

Untuk mencegah suatu kolom memiliki 2 baris atau lebih berisi data yang sama.

PRIMARY KEY

Mengkombinasikan constraint NOT NULL dan UNIQUE dalam satu deklarasi.Mengidentifikasikan secara unik setiap baris pada tabel.

FOREIGN KEY

Memaksakan nilai pada suatu tabel untuk bernilai sama dengan tabel lain.

CHECK

Menentukan suatu kondisi yang harus benar.

1.      NOT NULL

NOT NULL merupakan constraint yang digunakan untuk menjamin pengisian record ke sebuah tabel agar nilai record tersebut harus berisi data. Sebuah kolom jika di berikan constraint NOT NULL, maka kolom tersebut harus berisikan nilai untuk recordnya dan tidak boleh di kosongkan. NOT NULL hanya bisa di definisikan dalam sebuah tabel pada level kolom dan tidak bisa pada level tabel. Perbedaan antara NOT NULL dan PRIMARY KEY adalah bahwa setiap kolom yang dijadikan PRIMARY KEY pasti NOT NULL dan tidak berlaku sebaliknya.

Berikut adalah contoh penggunaan constraint NOT NULL:

CREATE TABLE dosen (

nip INTEGER

CONSTRAINT PK_dosen_nip PRIMARY KEY NOT NULL ,

nama_dosen VARCHAR(45),

alamat_dosen VARCHAR(255)

);

 

 

 

2.       UNIQUE

Constraint UNIQUE merupakan sebuah constraint yang akan membatasi pengisian record yang sama kedalam sebuah kolom jika kolom tersebut di berikan constraint UNIQUE dalam sebuah tabel. Constraint ini hampir sama dengan PRIMARY KEY, yaitu menjamin bahwa setiap nilai record yang ada dalam sebuah kolom UNIQUE tidak boleh ada yang sama (unik satu sama lain).

UNIQUE dapat dibuat pada level kolom ataupun level tabel. Sama dengan constraint PRIMARY KEY, FOREIGN KEY, CHECK.

CONSTRAINT U_(nama-tabel)_(nama-kolom) UNIQUE

 

 

Keterangan:

U = Singkatan dari UNIQUE

Nama-Tabel = Nama tabel tempat UNIQUE tersebut dibuat.

Nama-Kolom = Nama Kolom yang akan dijadikan UNIQUE

UNIQUE = Jenis constraint-nya, yaitu UNIQUE

Berikut adalah contoh penggunaan UNIQUE dan PRIMARY KEY secara in-line:

CREATE TABLE dosen (

nip INTEGER

CONSTRAINT pk_dosen_nip PRIMARY KEY ,

nama_dosen VARCHAR(45) CONSTRAINT UQ_dosen_nama

UNIQUE ,

alamat_dosen VARCHAR(255)

);

 

 

3.      PRIMARY KEY

PRIMARY KEY atau Kunci Utama dalam sebuah tabel merupakan kunci yang akan membatasi pengisian record dalam sebuah tabel agar tidak duplikat (redundant). Syarat sebuah kolom/ field dijadikan PRIMARY KEY dalam sebuah tabel adalah unik dan tidak boleh kosong (NOT NULL). Artinya bahwa nilai record-record dalam kolom yang dijadikan PRIMARY KEY haruslah unik satu sama lain dan nilainya tidak boleh di kosongkan. Jika sebuah kolom di beri constraint PRIMARY KEY maka sudah pasti kolom tersebut nilainya tidak boleh kosong atau harus berisi data. Berikut adalah perintah dasar pembuatan constraint PRIMARY KEY:

CONSTRAINT pk_(nama-tabel)_(nama-kolom) [jenis_constraint]

 

 

Keterangan:

PK = Singkatan dari jenis constraint yaitu PRIMARY KEY

Nama-tabel = Nama tabel tempat constraint tersebut di buat

Nama-kolom = Nama kolom yang akan di beri constraint

Jenis_constraint = Jenis-jenis constraint yang akan dibuat (PRIMARY KEY,

FOREIGN KEY, UNIQUE, NOT NULL, CHECK.

                Berikut merupakan contoh penggunaan PRIMARY KEY  secara in-line:

CREATE TABLE dosen (

nip INTEGER PRIMARY KEY ,

nama_dosen VARCHAR(45),

alamat_dosen VARCHAR(255)

);

 

 

                Berikut merupakan contoh penggunaan PRIMARY KEY  secara out-of-line:

CREATE TABLE dosen (

nip INTEGER,

nama_dosen VARCHAR(45),

alamat_dosen VARCHAR(255)

CONSTRAINT pk_dosen_nip PRIMARY KEY

);

 

 

4.      FOREIGN KEY

Foreign key disebut juga sebagai contraint Referential Integrity, constraint ini memastikan bahwa data pada suatu tabel didefinisikan pada tabel lainnya dan mengikat kedua tabel tersebut dalam hubungan parent/child atau referenced/dependent.

Saat kita menggunakan constraint FORIGN KEY, maka kita mengindetifikasikan bahwa suatu kolom pada suatu tabel harus ada pada kolom primary key atau unique pada tabel lain. Tabel dengan kolom primary key atau unique sebagai parent atau referenced, sedangkan tabel dengan foreign key sebagai child atau dependent.

CONSTRAINT fk_(nama-tabel)_(nama-kolom) FOREIGN KEY REFERENCES tabel-referensi(kolom-referensi)

 

Perintah dasar:

Keterangan:

FK = Singkatan dari FOREIGN KEY

Nama-Tabel = Nama tabel tempat FOREIGN KEY tersebut dibuat.

Nama-Kolom = Nama Kolom yang akan dijadikan FOREIGN KEY

FOREIGN KEY = Jenis constraint-nya, yaitu FOREIGN KEY

REFERENCES = Kata kunci untuk merelasikan tabel ini ke tabel utamanya (tabel

yang memiliki PRIMAR KEY)

Tabel-Referensi = Tabel yang akan dijadikan referensi (tabel utama).

Kolom-Referensi = Kolom yang menjadi referensi dari tabel utama.

Berikut adalah contoh penggunaan FOREIGN KEY secara in-line dan out-of-line:

       
   

CREATE TABLE mahasiswa(

nim INTEGER CONSTRAINT pk_mahasiswa_nim PRIMARY

KEY,

nip INTEGER

CONSTRAINT fk_mahasiswa_nim FOREIGN KEY REFERENCES dosen(nip),

nama_mhs VARCHAR(45),

alamat_mhs VARCHAR(255)

);

 

 
 

CREATE TABLE mahasiswa(

nim INTEGER CONSTRAINT pk_mahasiswa_nim PRIMARY

KEY,

nip INTEGER

nama_mhs VARCHAR(45),

alamat_mhs VARCHAR(255),

CONSTRAINT fk_mahasiswa_nim FOREIGN KEY REFERENCES dosen(nip)

);

 

 

 

Secara default, constraint foreign key mencegah penghapusan data pada tabel parent, apabila data tersebut di referensi oleh tabel child. Tetapi, jika kita tidak menginginkan hal demikian, kita dapat mengatur database agar secara otomatis menjaga referensial integrity dengan 2 cara, yaitu dengan menghapus data pada tabel child menggunakan klausa ON DELETE CASCADE dan mengubah nilai referensi pada tabel chile menjadi NULL menggunakan klausa ON DELETE SET NULL.

ON DELETE CASCADE

CREATE TABLE mahasiswa(

nim INTEGER CONSTRAINT pk_mahasiswa_nim PRIMARY

KEY,

nip INTEGER,

CONSTRAINT fk_mahasiswa_nim FOREIGN KEY REFERENCES dosen(nip) ON DELETE CASCADE,

nama_mhs VARCHAR(45),

alamat_mhs VARCHAR(255)

);

 

 

CREATE TABLE mahasiswa(

nim INTEGER CONSTRAINT pk_mahasiswa_nim PRIMARY

KEY,

nip INTEGER,

CONSTRAINT fk_mahasiswa_nimFOREIGN KEY REFERENCES dosen(nip) ON DELETE SET NULL,

nama_mhs VARCHAR(45),

alamat_mhs VARCHAR(255)

);

 

ON DELETE SET NULL

FOREIGN KEY YANG MEREFERENSIKAN DIRINYA SENDIRI

Tabel parent dan child tidak terbatas pada dua tabel yang berbeda, namun bisa juga pada dua kolom yang berbeda pada tabel yang sama, ini disebut dengan sel-referencing foreign key. Contohnya adalah tabel Pegawai yang membutuhkan data atasan dari tiap-tiap pegawai, dan atasan tersebut juga merupakan seorang pegawai. Dengan konfigurasi ini hierarki dalam tabel bisa dibuat lebih fleksibel.

5.      CHECK

Constraint CHECK fungsinya untuk pengecekan apakah sebuah kolom memenuhi sebuah kondisi spesifik yang dievaluasi dengan nilai boolean. Jika evaluasi menghasilkan nilai FLASE, maka oracle akan mengeluarkan eksepsi, dan klausa insert atau update akan gagal.

CREATE TABLE rekening (

No_rekening CHAR(15) CONSTRAINT

pk_rekening_no_rekening NOT NULL,

Kode_cabang CHAR(5)

CONSTRAINT fk_rekening_kode_cabang FOREIGN KEY REFERENCES cabang_bank(kode_cabang),

Pin CHAR(6),

Saldo MONEY CONSTRAINT chk_rekening_saldo CHECK(saldo > 50000)

 

Berikut adalah contoh penggunaan constraint CHECK dalam sebuah tabel:

BAB 3 PEMBAHASAN

                Data nilai merupakan data yang krusial, oleh karena itu dibutuhkan usaha untuk menjamin integritas datanya, maka salah satunya dibutuhkan constraint dalam pembuatan basis datanya. Dimulai dari ERD dibawah ini:

Lalu pada pembuatan table pada oracle maka dibutuhkan beberapa fungsi constraint untuk menjaga konsistensi datanya maka akan dibuat seperti ini:

  1. Pembuatan table mahasiswa secara in-line dan out-of lne:

Keterangan:

1 .NIM merupakan primary key

2. Nama harus berisi data atau syaratnya NOT NULL

3. Inisial harus UNIQUE berbeda antara satu dengan yang   lain

NIM merupakan primary key karena mahasiswa pasti memiliki NIM dan sudah pasti berbeda-beda setiap individunya oleh karena itu constraint PRIMARY KEY harus digunakan NIM. Selain itu pada entitas mahasiswa terdapat atribut inisial. Inisial menggunakan constraint UNIQUE, Constraint ini hampir sama dengan PRIMARY KEY, yaitu menjamin bahwa setiap nilai record yang ada dalam sebuah kolom UNIQUE tidak boleh ada yang sama (unik satu sama lain).

  1. Pembuatan tabel Nilai:

Keterangan:

1 .ID_NILAI merupakan primary key

2. NIM merupakan foreign key

3. Nilai antara 0 sampai 100

Id_nilai merepresentasikan kode nilai, jadi apabila jenis nilai yg diinput banyak maka id_nilai lah yang menjadi pembeda maka constraint PRIMARY KEY terdapat pada Id_nilai. NIM pada tabel nilai ini merupakan FOREIGN KEY dari table mahasiswa jadi data NIM pada tabel nilai dan  pada tabel mahasiswa sama, ini untuk mengetahui siapa pemegang dari nilai yang ada didalam tabel nilai. Dan juga pada constrain foreign key diatas menggunakan ON DELETE CASCADE ini untuk menjaga agar apabila data NIM di tabel mahasiswa terhapus maka NIM yang berada di tabel Nilai pun akan ikut terhapus. Ini dibutuhkan untuk menghindari data yang tidak konsisten.

Serta dibutuhkan sebuah constraint CHECK ini dibutuhkan untuk inputan nilai yang masuk ke dalam basis data, disini dibatasi antara 0 sampai dengan 100. Ini berarti sebuah data nilai yang masuk kedalam basis data harus dan pasti bernilai diantara 1 sampai 100 apabilai syarat itu tidak dipenuhi maka data tidak akan masuk kedalam basis data karena melanggar constraint dari CHECK.

Refferensi

  • Wibisono, Yudi. 2009. Integritas Data.ppt
  • Modul_Simbada_2.pdf

 

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s