Mengenal Constraint Pada Basis Data

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

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.

– Perintah dasar pada constraint unique :

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:

– Perintah dasar pada 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.

– Perintah dasar pada constraint foreign key :

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

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.

– Contoh penggunaan 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)

);

– Contoh penggunaan ON DELETE SET NULL

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)

);

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.

– Berikut adalah contoh penggunaan constraint CHECK dalam sebuah tabel:

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)

 

Semoga Bermanfaat 
Sumber:

  • Agung Sukarno
  • Kodingasyik

 

image

Mazadie

Assalamualikum .. Saya adalah Seorang Web Developer Asal Riau.

Komentar