Thursday, October 17, 2013

INTEGERASI BASIS DATA

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

jaminan konsistensi data terhadap semua status dibatasi yang diberlakukan terhadap data tersebut, sehingga memberikan jaminan keabsahan data itu sendiri. 

Constraints Classification
  • tuple constraint
        merupakan constraint yang bisa dievaluasi secara independen pada setiap tuple-nya. 


  • domain constraint
        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  

Transiton Constraint

Keys

Superkey merupakan Sebuah attribute, atau kumpulan attribute yang dapat mengidentifikasi tuple dalam sebuah relasi.

Candidate key Merupakan superkey minimal, sehingga tidak ada subset dari superkey ini yang dapat mengidentifikasi tuple dalam sebuah relasi


Primary key merupakan Candidate key yang dipilih untuk mengidentifikasi tuple secara unik dalam sebuah relasi.

Alternate key merupakan Candidate key yang tidak dipilih menjadi primary key




Foreign key Satu atau lebih attribute dalam sebuah relasi yang match dengan primary key
dari relasi lain yang berhubungan dengannya. (Atau match dengan relasi itusendiri pada recursive relationship)





Sql Support
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)


 
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



 



Monday, October 7, 2013

Optimasi Query

Optimasi Query merupakan sebuah cara untuk memaksimalkan kinerja akses data atas query yang dibuat. Oleh karena itu perlu sebuah analisa dan pembuktian perintah query mana yang dianggap baik dalam kinerja aksesnya.

Optimasi Perintah SQL
Index pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan unjuk kerja dalam hal ini kecepatan akses data.

Misal digunakan index yang melibatkan tiga buah kolom yang mengurutkan kolom menurut kota, propinsi dan kode pos dari tabel karyawan, sebagai berikut :

CREATE INDEX idx_kota_prop_kodepos
ON karyawan(kota, propinsi, kode_pos)
TABLESPACE INDX;

Kemudian user melakukan query sebagai berikut :

SELECT * FROM karyawan WHERE propinsi=’Jawa Barat’;

Pada saat melakukan query ini, index tidak akan digunakan karena kolom pertama (kota) tidak digunakan dalam klausa WHERE. Jika user sering melakukan query ini, maka kolom index harus diurutkan menurut propinsi. Selain itu, proses pencarian data akan lebih cepat jika data terletak pada block tabel yang berdekatan daripada harus mencari di beberapa datafile yang terletak pada block yang berbeda. Misal pada perintah SQL berikut ini :

SELECT * FROM karyawan
WHERE id BETWEEN 1010 AND 2010;

Query ini akan melakukan “scan” terhadap sedikit data block jika tabel karyawan diatas diurutkan berdasarkan kolom id. Untuk mengurutkan berdasarkan kolom yang berbeda-beda maka tabel disimpan dalam flat file, kemudian tabel diekspor dan diurutkan sesuai kebutuhan. Alternatif yang lain, bisa digunakan perintah untuk membuat tabel lain yang memiliki urutan yang berbeda dari tabel asal, seperti perintah SQL berikut :

CREATE TABLE karyawan_urut
AS SELECT * FROM karyawan
ORDER BY id;

Pada SQL diatas, tabel karyawan_urut berisi data yang sama dengan tabel karyawan hanya datanya terurut berdasarkan kolom id.

Informasi Jalur Akses Query
Bagaimana cara melihat jalur akses yang akan digunakan database saat melakukan query ?.  Pada Database Oracle, informasi ini dapat dilihat dengan menggunakan perintah explain plan, yang akan memberi informasi tentang rencana eksekusi dari suatu query.

Faktor lain yang berpengaruh terhadap kecepatan akses data, tidak hanya terletak
pada optimasi perintah SQL, tapi terhadap hal-hal lain yang berpengaruh. Diantaranya
adalah optimasi aplikasi dan penggunaan cluster dan index. Berikut penjelasannya :
-    OPTIMASI APLIKASI
Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses
terhadap data sudah efisien. Efisien dalam hal penggunaan obyek yang mendukung
kecepatan akses, seperti index atau cluster. Kemudian juga bagaimana cara database didesain. Apakah desain database sudah melakukan normalisasi data secara tepat.
Kadangkala normalisasi sampai level yang kesekian, tidak menjamin suatu
desain yang efisien. Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi. Misalnya tabel yang hubungannya one-toone dan sering diakses bersama lebih baik disatukan dalam satu tabel.

-    CLUSTER DAN INDEX
Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda
dalam suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk
akses data dari beberapa tabel yang sering di-query. Penggunaan cluster secara tepat
dilaksanakan setelah menganalisa tabel-tabel mana saja yang sering di-query secara
bersamaan menggunaan perintah SQL join. Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan index yang melibatkan kolom tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex. Dalam RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih baik menggunakan index bitmap.