PENGAKSESAN QUERY

advertisement
INTEGRITAS BASIS DATA
OLEH :
Slamet Sn
Wibowo Wicaksono
Integrity Constraint (Batasan Integritas)
Constraint (batasan) merupakan aturan yang diberikan pada
suatu tabel agar data yang dimasukkan terjamin
validitasnya. Batasan integritas akan menjaga basis data
dari kerusakan yang terjadi secara tidak sengaja dengan
memastikan bahwa perubahan yang diperbolehkan tidak
mengakibatkan terjadinya inkonsistensi data.
Constraint dapat diklasifikasikan sesuai dengan elemen dari
basis data yang bersangkutan menjadi sebagai berikut.
Klasifikasi Konstrain
 Constraint tersebut intra-relasional apabila batasan (constraint)
terpenuhi dalam satu tabel. Constraint ini sendiri dapat dibedakan
menjadi 2 yaitu: tuple constraint dan domain constraint. Tuple
constraint merupakan constraint yang bisa dievaluasi secara
independen pada setiap tuple-nya. Domain constraint atau sering
disebut sebagai value constraint merupakan suatu constraint dengan
referensi kepada nilai (value) tertentu. Implementasi dari
penggunaan domain constraint pada SQL adalah penggunaan
klausa check
 Suatu constraint dikatakan inter-relasional apabila melibatkan lebih
dari satu relasi. Bentuk dari constraint ini adalah referential
integrity
 Ada beberapa bentuk dari integrity constraint yaitu domain
constraint, referential integrity, assertion, trigger.
Domain Constraint
Domain constraint merupakan bentuk integrity
constraint yang paling sederhana. Setiap ada pemasukan
data baru, maka akan langsung diperiksa oleh sistem.
Domain constraint diterapkan pada atribut basis data
sehingga sangat dimungkinkan beberapa atribut
memiliki domain yang sama.
 Untuk menciptakan domain baru dapat digunakan
perintah create domain. Sebagai contoh adalah pada
perintah:
 create domain Dollar numeric (12,2)
 create domain Pound numeric (12,2)

Domain Constraint
 Pada bahasa SQL juga terdapat klausa check yang bisa
digunakan untuk memeriksa suatu kondisi nilai tertentu
yang diinginkan. Berikut adalah contoh penggunaan
klausa check pada perintah create domain.
 Create domain HourlyWage numeric(5,2) constraint
wage-value-test check (value>=4.00)
 Perintah tersebut akan mengecek nilai dari domain
HourlyWage harus ≥ 4.00
Referential Integrity (Integritas Referensial)
 Integritas referensial adalah seperangkat aturan yang
mengatur hubungan antara kunci primer dengan kunci
tamu milik tabel-tabel yang berada dalam suatu basis data
relasional untuk menjaga konsistensi data .
 Tujuan integritas referensial sendiri adalah untuk
menjamin dan memastikan agar entitas dalam suatu tabel
yang menunjuk ke suatu pengenal unik pada suatu baris
di tabel lain benar-benar menunjuk pada nilai yang
memang ada. Sehingga kejadian seperti pada ilustrasi
seperti gambar diobawah tidak terjadi
Referential Integrity (Integritas Referensial)
 SI dg DBMS Terpisah
End User
Application Interface
Application Program
Sophisticated
User
query
DBMS
Database
Application
Programmer
Referential Integrity (Integritas Referensial)
 Berdasarkan operasi yang dilakukan, integritas referensial
dapat dibedakan sebagai berikut:
o penambahan (insert)
o penghapusan (delete)
o peremajaan (update)
 Integritas referensial membuat ketiga operasi di atas
dapat dilaksanakan pada tabel yang memiliki relasi.
Sehingga proses penghapusan ataupun peremajaan suatu
kolom juga akan terjadi pada kolom tabel lain yang
mempunyai referensi dengannya.
Referential Integrity (Integritas Referensial)
 Dalam bahasa Data Definition Language SQL, kunci primer,
kunci kandidat, dan kunci tamu, dapat dispesifikasikan sebagai
bagian dari pernyataan SQL create table. Kunci kandidat
merupakan kunci yang secara unik dapat digunakan untuk
mengidentifikasi suatu baris dalam tabel. Berikut adalah salah
satu contoh DDL dari pembuatan tabel mata_kuliah.
 create table mata_kuliah
(kode_mk char(6) not null,
mata_kuliah varcar(25),
nip char(9),
primary key (kode_mk),
foreign key (nip) references dosen on delete cascade)
Assertion
 Penggunaan constraint berupa kunci primer dan kunci
tamu pada deklarasi awal tabel merupakan salah satu cara
untuk memelihara integritas data. Domain constraint dan
Referential integrity constraint merupakan salah satu bentuk
dari assertion.
 Pada beberapa basis data penggunaan kunci primer dan
kunci tamu sudah cukup untuk menjaga integritas data.
Tetapi pada beberapa kasus basis data diperlukan suatu
constraint ataupun aturan yang lebih baik.
 Metode lain yang sering digunakan dalam pemeliharaan
integritas adalah assertion dan trigger
Assertion
 Assertion digunakan untuk mengekspresikan suatu kondisi
basis data sesuai dengan yang kita inginkan. Seperti halnya
prosedur, assertion diberikan nama tertentu sehingga bisa
dibatalkan apabila ada kondisi tertentu yang menuntut
perubahan struktur basis data. Syntax dari definisi assertion
adalah sebagai berikut.
 create assertion AssertionName check (predicate)
 Ketika assertion dibuat, maka sistem akan melakukan
pengecekan validitas dari assertion yang dibuat. Jika assertion
yang dibuat valid maka perubahan terhadap basis data hanya
akan berlaku ketika tidak menyalahi assertion yang telah
dibuat.
Assertion
 Pengecekan validitas tersebut akan memakan biaya yang
besar terutama apabila assertion yang dibuat cukup
rumit, sehingga penggunaan dan pembuatan assertion
harus dilakukan dengan hati-hati
 Karena itu tidak banyak developer sistem dan DBMS
yang menyediakan fasilitas ini.
Assertion

Create assertion IC13 check
( ( Select min (s.status) from s ) > 4 );

Create assertion IC18 check
(not exists ( select * from P
where not ( P.Weight > 0.0 )));

Create assertion IC99 check
( not exists ( select * from P
where P.color = ‘Red’
and P.city <> ‘London’));

Create assertion IC49 check
( not exists ( select * from P, SP
where P.P# = SP.P#
and ( P.weight * SP.Qty) > 20000));

Create assertion IC95 check
( not exists ( select * from S, SP
where S.status < 20
and S.S# = SP.S#
and SP.Qty > 500 ));
Trigger

Trigger merupakan pernyataan yang dieksekusi secara otomatis oleh
sistem basis data sebagai akibat dari perubahan basis data. Ada
beberapa persyaratan yang harus dipenuhi untuk merancang
mekanisme trigger, yaitu:



Menspesifikasikan kapan trigger harus dieksekusi.
Menspesifikasikan perintah yang akan dilaksanakan ketika trigger dijalankan
Trigger sebenarnya tidak lain adalah suatu pemrograman PL/SQL
yang mirip dengan procedure. Perbedaan mendasar dengan procedure
adalah aktivasinya, dimana procedure dapat dipanggil secara langsung
sementara trigger dipanggil melalui pemicu yang berupa bahasa DML
(Data Manipulation Language). Bahasa DML yang digunakan sebagai
pemicu adalah insert, update dan delete.
Download