Monday, July 4, 2011

Constraint

I. CONSTRAINT

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
· Memahami definisi Constraint
· Dapat Membuat Constraint
· Dapat Melakukan pemeliharaan Constraint

1.1 Definisi Constraint
Constraint adalah batasan atau aturan yang ada pada table. Constraint mencegah penghapusan data dari suatu table yang mempunyai keterkaitan dengan table yang lain. Misal terdapat keterkaitan antara table department dengan table pegawai. Dimana pada table pegawai menyimpan informasi kolom nomer department yang juga terdapat pada table department. Jika baris dengan nomer department '10' akan dihapus dari table department, sedangkan terdapat data pegawai yang bekerja pada department tersebut, maka dengan adanya constraint antara dua table, penghapusan tersebut tidak bisa dilakukan. Oracle menyediakan beberapa tipe constraint berikut :
• NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK

Sintak penulisan Constraint :
CREATE TABLE         [schema.]table
                                 (column datatype [DEFAULT expr]
                                 [column_constraint],
                                 ...
                                 [table_constraint][,...]);







Contoh penulisan Constraint :
CREATE TABLE         employees(
                                 employee_id NUMBER(6),
                                 first_name VARCHAR2(20),
                                 ...
                                 job_id VARCHAR2(10) NOT NULL,
                                 CONSTRAINT emp_emp_id_pk
                                 PRIMARY KEY (EMPLOYEE_ID));









1.2 Constraint NOT NULL
Suatu kolom yang didefinisikan dengan constraint NOT NULL tidak boleh berisi nilai NULL. Kolom yang befungsi sebagai kunci primer (primary key) otomatis tidak boleh NULL.



Contoh penggunaan Constraint NOT NULL :

1.3 Constraint UNIQUE
Constraint UNIQUE mendefinisikan suatu kolom menjadi bersifat unik. Ilustrasi penggunaan Constraint UNIQUE :


Perintah pembuatan tabel untuk ilustrasi diatas :

1.4 Constraint PRIMARY KEY
Constraint PRIMARY KEY membentuk key yang unik untuk suatu table. Kolom yang didefinisikan sebagai PRIMARY KEY akan mengidentifikasi suatu baris data menjadi unik.
Contoh penggunaan Constraint PRIMARY KEY :







Ilustrasi penggunaan Constraint PRIMARY KEY :

1.5 Constraint FOREIGN KEY
FOREIGN KEY constraint didefinisikan pada suatu kolom yang ada pada suatu tabel, dimana kolom tersebut juga dimiliki oleh table yang lain sebagai suatu PRIMARY KEY.
Ilustrasi penggunaan Constraint FOREIGN KEY :

Perintah pembuatan tabel untuk ilustrasi diatas :

1.6 Keyword dari Constraint FOREIGN KEY
Berikut ini keyword yang ada pada Constraint FOREIGN KEY :
·      FOREIGN KEY                   : Mendefinisikan kolom yang ada pada tabel anak
·      REFERENCES                    : Mengidentifikasi tabel dan kolom dalam tabel induk
·      ON DELETE CASCADE         : Penghapusan baris dependent dalam tabel anak pada saat sebuah baris pada tabel induk dihapus
·      ON DELETE SET NULL        : Mengkonversi dependent foreign key ke nilai NULL.
                 
1.7 Constraint CHECK
Constraint CHECK digunakan untuk mendefinisikan suatu kondisi yang harus
dipenuhi oleh tiap baris data dalam table.
Contoh penggunaan :

1.8 Menambahkan suatu Constraint
Untuk menambahkan suatu Constraint, digunakan perintah ALTER TABLE.
Cara penulisan :
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);




1.9 Menambahkan Constraint
Misal ditambahkan constraint FOREIGN KEY pada tabel EMPLOYEES yang menunjukkan bahwa data manager harus valid atau berasal dari tabel EMPLOYEES.

1.10 Menghapus Constraint
Untuk menghapus suatu Constraint, juga digunakan perintah ALTER TABLE.
Cara penulisan :
ALTER TABLE table
DROP [CONSTRAINT constraint] type (column);
Untuk menghapus constraint manager dari tabel EMPLOYEES :
Untuk menghapus constraint PRIMARY KEY pada tabel departments dan menghapus
asosiasi constraint FOREIGN KEY pada kolom EMPLOYEES.DEPARTMENT_ID

1.11 Men-Disable Constraint
Untuk menonaktifkan constraint digunakan klausa DISABLE. Pilihan CASCADE digunakan untuk men-disable dependent integrity constraint.

1.12 Meng-Enable Constraint
Untuk mengaktifkan kembali constraint, digunakan klausa ENABLE




1.13 Cascading Constraint
Klausa CASCADE CONSTRAINTS digunakan dengan klausa DROP COLUMN. Klausa CASCADE CONSTRAINTS menghapus semua referential integrity constraints yang merefer ke primary dan unique key yang didefinisikan pada kolom yang dihapus.

1.14 Menampilkan Constraint
Tabel USER_CONSTRAINT menyimpan informasi tentang constraint. Kolom tipe constraint (constraint_type) dapat berisi : C untuk constraint CHECK, R untuk referential integrity atau FOREIGN KEY, P untuk PRIMARY KEY, U untuk constraint UNIQUE.

1.15 Menampilkan Kolom yang Berasosiasi dengan suatu Constraint
Berikut ini untuk menampilkan Kolom yang Berasosiasi dengan suatu nama suatu Constraint yang ada pada view USER_CONS_COLUMNS


1.16 Latihan
1. Tambahkan table-level PRIMARY KEY Constraint pada tabel EMP pada kolom ID.
    Constraint diberi nama : my_emp_id_pk
2. Buat PRIMARY KEY Constraint pada tabel DEPT dengan menggunakan kolom ID.
    Constraint diberi nama : my_dpet_id_pk
3. Tambahkan kolom DEPT_ID ke dalam tabel EMP. Tambahkan foreign key references pada tabel EMP yang memastikan bahwa data pegawai dimasukkan berdasarkan nomer department yang ada pada tabel DEPT.
4. Tampilkan constraint-constraint yang telah ditambahkan dengan melihat pada view USER_CONSTRAINTS.
5. Tampilkan nama object dan tipenya dari data dictionary USER_OBJECTS untuk tabel EMP dan DEPT.
6. Modifikasi tabel EMP. Tambahkan kolom COMMISSION dengan tipe data NUMBER(2). Tambahkan Constraint untuk memastikan bahwa kolom ini harus diisi dengan nilai > 0.