Tuesday, February 26, 2013
Ilmu Komputer
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
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, …
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, …
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), …
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, …
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), …
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), …
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), …
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)), …
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)),
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