Oracle Mempunyai 5 Tipe Constraint


Tipe – tipe Constraint
Oracle menyediakan lima constraint yang dapat digunakan untuk memberikan batasan batasan operasi DML baik pada level kolom maupun level table. Constraint level kolom adalah constraint yang hanya melibatkan satu kolom saja dan didefinisikan langsung pada definisi kolom tersebut. Sedangkan constraint level table melibatkan lebih dari satu kolom (composite constraint) atau didefinisikan secara terpisah dari definisi kolom. Kelima constraint tersebut adalah :

Ø  NOT NULL
Ø  UNIQUE
Ø  PRIMARY KEY
Ø  FOREIGN KEY
Ø  CHECK
Dari kelima constraint tersebut di atas hanya constraint NOT NULL yang dikhususkan untuk level kolom. Dan selebihnya bisa digunakan pada level kolom maupun level table.

Ø  NOT NULL
Tipe ini hanya berlaku untuk level kolom. Bentuk umum klausa constrain untuk tipe ini adalah sebagai berikut.
[CONSTRAINT constraint_name] NOT NULL
Constraint NOT NULL bertujuan untuk membuat suatu kolom tidak boleh berisi nilai null. Berikut sebuah contoh pemberian constraint terhadap kolom no_peg dari table PEGAWAI.
ALTER TABLE PEGAWAI MODIFY (no_peg VARCHAR(8) NOTNULL);
table altered
Contoh:
Menentukan constraint NOT NULL pada kolom PHONE.
CREATE TABLE friend …
phone VARCHAR2(15) NOT NULL
Menentukan constraint NOT NULL pada kolom LAST_NAME. Constraint diberi nama FRIEND_LAST_NAME_NN.
CREATE TABLE friend …
last_name VARCHAR2(15)
CONSTRAINT friend_last_name_nn NOT NULL, …

Ø  UNIQUE
Constraint ini berlaku pada level kolom maupun level table. Bentuk constraint pada level kolom.
[CONSTRAINT constraint_name] UNIQUE
sedangkan bentuk umum pada level tabel adalah sebagai berikut.
[CONSTRAINT constraint_name] UNIQUE {col_1 [, col_2 [, …[, col_n]]] }
Contoh:
Mendefinisikan constraint UNIQUE untuk kolom NAME dari tabel REGION.
CREATE TABLE region …
name VARCHAR2(50)
CONSTRAINT region_name_uk UNIQUE, …
Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut.
CREATE TABLE employee …
name VARCHAR2(50), …
CONSTRAINT region_name_uk UNIQUE(name), …
Constraint UNIQUE ini bertujuan untuk membuat sebuah kolom atau kombinasi dari beberapa kolom pada sebuah table menjadi bersifat unik. Dengan demikian, didalam table tersebut tidak diperbolehkan ada dua baris data yang nilai unique key-nya sama.

Ø  PRIMARY KEY
Constraint tipe ini juga berlaku pada level kolom maupun level table.bentuk umumnya pada level kolom adalah sebagai berikut.
[CONSTRAIN constrain_name] PRIMARY KEY
Sedangkan bentuk umum pada level table adalah sebagai berikut
[CONSTRAIN constrain_name] PRIMARY KEY ( col_1 [, col_2 [,….[, col_n]]] )
Contoh:
Mendefinisikan constraint PRIMARY KEY untuk kolom ID dari table EMPLOYEE.
CREATE TABLE employee …
id NUMBER(7)
CONSTRAINT employee_id_pk PRIMARY KEY, …
Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut.
CREATE TABLE employee …
id NUMBER(7), …
CONSTRAINT employee_id_pk PRIMARY KEY (id), …
Constrain ini bertujuan untuk menentukan suatu kolom atau kombinasi dari beberapa kolom sebagai primary key dari sebuah table. Primary key merupakan identitas dari baris baris data pada suatu table. Sebagai identitas ,primary key hanya boleh ada satu pada sebuah table, tentu saja dapat berupa kombinasi kolom kolom . selain itu kolom atau kombinasi kolom yang menjadi primary key tersebut tidak boleh diberi nilai NULL. Dengan kata lain, primary key adalah unique key yang diberi constrain NOT NULL. Sebagai catatan , sebuah primary key pada table tidak boleh diberi constrain UNIQUE tetapi diperbolehkan diberi constrain NOT NULL

Ø FOREIGN KEY
Constrain ini bertujuan untuk menetapkan suatu kolom atau kombinasi dari beberapa kolom menjadi foreign key dari sebuah table. Foreign key serin disebut sebagai referential integrity constraint . kegunaaan foreign key adalah untuk membentuk sebuah relasi antara suatu table dengan table lainnya. Kolom atau kombinasi kolom yang menjadi foreign key pada table anak (dependen atau chil tabel) mengacu ke kolom atau kombinasi kolom yang menjadi primery key atau unique key pada rabel induk (referent atau parent tabel) table induk dapat berupa table itu sendiri atau table lainnya.

Bentuk umum klausa constraint untuk membuat sebuah FK pada level kolom adalah sebagai berikut.
[CONSTRAIN constrain_name] REFERENCES [schema] table [(coluum)] [ON DELETED < CASCADE │ SET NULL>]

Bentuk umum klausa constraint untuk membuat sebuah Foreign key pada level tabel adalah sebagai berikut.
[CONSTRAIN constrain_name] FOREIGN KEY (col_list)
REFERENCES [schema.] table [ (col_list) ] [ON DELETED < CASCADE │ SET NULL>]
Contoh:Mendefinisikan constraint FOREIGN KEY untuk kolom DEPT_ID dari table EMPLOYEE yang mengacu kepada kolom ID dari table DEPARTMENT.
CREATE TABLE employee …
dept_id NUMBER(7)
CONSTRAINT employee_dept_id_fk REFERENCES department(id), …
Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut.
CREATE TABLE employee …
dept_id NUMBER(7), …
CONSTRAINT employee_dept_id_fk FOREIGN KEY (dept_id)
REFERENCES department(id), …
Pada kedua bentuk umum diatas terlihat bahwa kolom atau col_list setelah table adalah bersifat opsional. Namun sebaiknya, columm atau col_list tersebut dituliskan secara eksplisit agar oracle dapat memastikan kolom atau kombinasi kolom yang mana yang dijadikan sebagai referensi. Hal ini juga memudahkan pemahaman bagi orang yang membaca SQL statement tersebut.

Ø CHECK
Constrain CHECK dapat berlaku untuk level kolom maupun level table. Bentuk umum klausa CHECK untuk kedua level tersebut sama saja, yakni seperti yang ditunjukkan berikut.

[ CONSTRAINT constrain_name CHECK (condition) ]
Contoh:
Mendefinisikan constraint CHECK untuk kolom COMMISSION_PCT dari table EMPLOYEE.
CREATE TABLE employee …
commission_pct NUMBER(4,2)
CONSTRAINT employee_commission_pct_ck
CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)), …
Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut.
CREATE TABLE employee …
commission_pct NUMBER(4,2), …
CONSTRAINT employee_commission_pct_ck
CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)),
Constrain CHECK berguna untuk membuat suatu kondisi yang harus dipenuhi oleh setiap baris data didalam suatu table. Kondisi tersebut dapat berupa salah satu dari kondisi kondisi berikut ini.
a.       Kondisi perbandingan
b.      Kondisi range
c.       Kondisi LIKE
d.      Kondisi EXISTS

Kondisi yang memenuhi adalah yang menghasilkan nilai TRUE atau uknown untuk nilai NULL. Kondisi pada constraint CHECK disuatu table dapat mengacu kesembarang kolom pada table tersebut tetapi tidak boleh mengacu ke kolom – kolom pada table lainnya. Ketika oracle mengevaluasi suatu kondisi pada constraint CHECK untuk sebuah baris nama – nama kolom yang diberikan pada kondisi tersebut mengacu ke nilai – nilai kolom pada baris tersebut.

0 Response to "Oracle Mempunyai 5 Tipe Constraint "

Post a Comment