Sabtu, 18 Oktober 2014

Integritas Basis Data

Integritas data adalah menjamin konsistensi data terhadap semua konstrain yang diberlakukan terhadap data tersebut, sehingga memberikan jaminan keabsahan data itu sendiri.
Tujuannya adalah menjaga data agar data yang tidak valid tidak masuk ke database. Menjaga konsistensi data pada relasi keterkaitan antar tabel.
Integritas data dapat dikelompokkan sebagai berikut :
1. Entity Integritas
Entity integritas  mendefenisikan sebuah baris  sebagai sebuah entitas yang unik untuk suatu tabel. Entity integritas memaksa  integritas  dari colum atau primary key dari suatu tabel (melalui index, unique, constrains, primarykey) tidak boleh null.
2. Domain integritas
Domain Integritas merupakan validasi dari masukan untuk sebuah kolom. Anda dapat memaksa domain integritas dengan membatasi tipe (melalui data types), format (melalui  check  constraints  dan  rules),  atau range  nilai-nilai  yang  mungkin  (melalui Foreign Key Constraints, Check Constraints, Default Definitions dan rules).
3. Refferential Integritas
Refferential integritas  memastiakn bahwa seluruh nilai dari foreign key  cocok dengan  nilai primary key yang dihubungkan.
4.  User Defined integritas
User difined integritas mengizinkan  kita untuk menentukan  spesific business rules  sendiri  yang tidak sama pada kategori integrity yang lain

Jenis-jenis Integritas Data :
·         Domain integrity (Integritas jangkauan nilai)
Tidak ada item data yang melanggar jangkauan nilai di tiap kolom data.
·         Integrity Entity (Integritas Entitas)
Tidak ada baris data duplikat dalam satu tabel.
·         Integrity Referential (Integritas acuan)
Menjaga relasi atau korespondensi antar tabel.
·         Redudant Data Integrity (Integritas Data Antar Tabel)
Data di sebuah tabel tidak berulang di tabel lain.
·         Bussiness Rule Integrity (Integritas Aturan Nyata)
Data di suatu tabel harus memiliki nilai yang layak dan dapat diterima ditempat sistem basis data itu diterapkan. Integritas jenis ini bersifat kasuistis, artinya sangat bergantung pada jenis data, lokasi, lingkungan, dan waktu penerapan basis data.
·         Membuat Constraint
Constraint merupakan suatu aturan yang membatasi jenis data yang diijinkan untuk dimasukkan ke dalam tabel.

Constraints Classification

Constraints Classification adalah aturan untuk memberikan akses ke data dalam sebuah database.
S=(R,A,E,L)
Constraints classification adalah aturan yang menentukan nilai satu atau lebuh klasifikasi atribut. R adalah nama dari relasi, A adalah daftar dari satu atau lebih atribut data di R, E adalah ekspresi opsional dan L adalah kelas akses.
Ada 4 tipe classification constraints :
1. Type dependent : tidak ada ekspresi E dan L adalah variable ekspresi yang konstan, sehingga semua elemen yang terkait dengan atribut memiliki kelas yang sama. Mendefinisikan single level atribut.
Contoh : (R, A, , SECRET)
(R, (A,B), , PROPRIETARY)
2.  Value dependent : Salah satu E atau L atau keduanya ada, sehingga akses kelas yang terasosiasikan dengan element tergantung pada nilai dari element atau akses kelas dari data lain dalam database.
Contoh : (R, A, A=1, CONF) => kelas elemen terkait dengan atribut A ditentukan oleh nilai dari elemen.
(R, A, , class (R.B)) => ditentukan oleh kelas dari atribut B.
(R, A, A=1, class(R.B)) => ditentukan oleh atribut A dan B.
3. Source level : akses kelas L adalah ekspresi “kelas (user)” merupakan kelas akses dari user(subjek) yang memasuki elemen. Ekspresi E bisa hadir maupun tidak.
Contoh : (R, A, , class(user))
(R, B, B>0, class (user))
4. Source label : akses kelas L merupakan ekspresi *, berarti subjek yang memasuki elemen menyediakan akses kelas untuk elemen. Ekspresi E bisa hadir maupun tidak.
Contoh : (R, A, , *)
(R, B, B>0, *)

Constraint Classification (Tipe-tipe Constraint) :
·         PRIMARY  KEY Constraint
Berguna untuk menspesifikasikan kolom dalam tabel. Tidak boleh kosong dan harus unik, untuk menghubungkan satu tabel dengan tabel lain.
·         FOREIGN KEY Constraint
Digunakan untuk menspesifikasikan kolom foreign key pada suatu tabel. Foreign Key digunakan untuk menghubungkan dua tabel. Kolom foreign key adalah kolom atau kombinasi beberapa kolom dalam suatu tabel yang selalu merujuk pada kolom primary key pada suatu tabel.
·         UNIQUE Constraint
Digunakan untuk menjamin bahwa data pada suatu kolom atau beberapa kolom tidak diijinkan sama.
·         CHECK Constraint
Digunakan untuk membatasi suatu nilai pada kolom dengan nilai tertentu yang diijinkan masuk.
·         DEFAULT Constraint
Merupakan atribut opsional yang digunakan untuk memberikan suatu nilai tertentu pada suatu kolom jika kolom tersebut tidak dimasukkan suatu data.
·         NOT NULL
Digunakan untuk menjamin tidak ada nilai null (kosong) yang muncul pada suatu kolom tertentu sehingga bila tidak mengisikan nilai pada kolom tersebut maka akan muncul error.

Transition Constraints

Transition constraints adalah cara untuk memastikan database tidak dimasukan data yang tidak mungkin berhubungan dengan data sebelumnya. Transition constraints dapat dimodelkan sebagai diagram transisi untuk memastikan aturan untuk memperbaharui entitas dengan cara tertentu. Ada keadaan awal, flow garis yang menunjukan data berikutnya yang sesuai dengan aturan,



Seperti dapat dilihat diatas, keadaan awal adalah born, selanjurnya menunjukan married dan dead, tidak mungkin setelah dead atau married kembali ke born. Hanya pada state married dan divorce yang dua arah. Hal ini memastikan data yang dimasukan harus sesuai dengan aturan yang berlaku dan berhubungan dengan state sebelumnya.

Transition constraints basis data dan Keys sql support

CREATE TABLE membuat tabel baru pada basis data yang sedang aktif. Secara umum, perintah ini memiliki bentuk

 CREATE TABLE [''nama_tabel'']
 (
 nama_field1 tipe_data [constraints][,
 nama_field2 tipe_data,
 ...]
 )
atau
 CREATE TABLE [''nama_tabel'']
 (
 nama_field1 tipe_data [,
 nama_field2 tipe_data,
 ...]
 [CONSTRAINT nama_field constraints]

)

dengan:

nama_field adalah nama kolom (field) yang akan dibuat. Beberapa sistem manajemen basis data mengizinkan penggunaan spasi dan karakter nonhuruf pada nama kolom.

tipe_data tergantung implementasi sistem manajemen basis data. Misalnya, pada MySQL, tipe data dapat berupa VARCHAR, TEXT, BLOB, ENUM, dan sebagainya.

constraints adalah batasan-batasan yang diberikan untuk tiap kolom. Ini juga tergantung implementasi sistem manajemen basis data, misalnya NOT NULL, UNIQUE, dan sebagainya. Ini dapat digunakan untuk mendefinisikan kunci primer (primary key) dan kunci asing (foreign key).

Satu tabel boleh tidak memiliki kunci primer sama sekali, namun sangat disarankan mendefinisikan paling tidak satu kolom sebagai kunci primer.


Contoh:
 CREATE TABLE user
 (
 username VARCHAR(30) CONSTRAINT PRIMARY KEY,
 passwd VARCHAR(20) NOT NULL,
 tanggal_lahir DATETIME
 );

Keys, sql support

Structured Query Language yang sering disebut SQL merupakan suatu bahasa database relasional yang dibuat berdasarkan suatu standart. berikut merupakan bentuk dasar dari SQL.
Keys Sql Support 
SQL mendukung sejumlah kendala integritas yang berbeda. Ini beberapa diantaranya:
1.Primary-Key:
Primary-Key mengatakan bahwa atribut (Aj1, Aj2,..., Ajm) membentuk primary key untuk relasi. Primary Key dituntut untuk non null dan unik, yaitu, tidak ada tuple yang dapat memiliki
nilai null untuk atribut Primary-Key, dan tidak ada dua tupel dalam relasi
dapat sama pada semua atribut Primary-Key. Meskipun spesifikasi Primary-Key opsional , biasanya ide yang baik untuk menentukan Primary-Key untuk setiap relasi .
2.Foreign-Key:
Spesifikasi Foreign-Key mengatakan bahwa nilai-nilai atribut (AK1, AK2, ..., AKN) untuk setiap tupel dalam relasi harus sesuai dengan nilai-nilai dari atribut Foreign-Key dari beberapatuple dalam
hubungan s.
3.Not-null:
Kendala Not-null pada atribut menentukan bahwa nilai null tidak diperbolehkan untuk atribut tersebut, dengan kata lain, kendala tidak termasuknilai null dari domain dari atribut tersebut.


Minggu, 28 September 2014

Optimasi Query

Pengertian dan Tujuan
Optimasi Query adalah suatu strategi penggunaan sumber sumber jalur query secara lebih efektif dan efisien dengan tujuan untuk seminimal mungkin total waktu yang digunakan ketika proses query berlangsung. 
Intinya dalam mengoptimalkan query adalah dengan meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.

Faktor-faktor lain yang berpengaruh terhadap optimalisasi kecepatan akses data dipengaruhi oleh banyak faktor seperti :
1.Optimasi Perintah SQL

Structured Query Language (SQL) adalah bahasa pemrograman yang memiliki tujuan khusus untuk mengelola data dalam sistem manajemen basis data relasional (DBMS).
Dalam melakukan optimalisasi perintah pada SQL kita harus mempertimbangkan aspek desain logik dan struktur penyimpanan data.Intinya dalam mengoptimalkan query adalah dengan meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.

Penggunaan Index pada database secara tepat, dapat 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, provinsi, dan alamat dari tabel siswa , sebagai berikut :

CREATE INDEX idx_kota_prov_alamat
ON siswa(kota,provinsi,alamat)
TABLESPACE INDX;

Kemudian user melakukan query sebagai berikut :
SELECT* FROM siswa WHERE kota=’Jawa Tengah’;

Pada saat melakukan query tersebut, 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 provinsi. Selain itu, proses pencarian data akan lebih cepat jika data terletak pada block tabel yang berdekatan daripada harus mencari dibeberapa data file yang terletak pada block yang berbeda.

Misal pada perintah SQL berikut ini :

SELECT* FROM siswa
WHERE nis BETWEEN 06650 and 06660;

Query di atas akan melakukan “scan” terhadap sedikit data block jika tabel siswa diatas diurutkan berdasarkan kolom nis. 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 siswa_urut
AS SELECT* FROM siswa
ORDER BY nis;

Pada SQL diatas, tabel siswa_urut berisi data yang sama dengan tabel siswa hanya datanya terurut berdasarkan kolom nim.

2. Informasi Jalur Akses Query
Pada Database Oracle, informasi untuk melihat jalur akses yang akan digunakan untuk eksekusi database saat melakukan query dapat dilihat dengan menggunakan perintah explain plain.Informasi ini disimpan dalam tabel PLAN_TABLE yang terdapat di schema user yang mengeksekusi perintah tersebut.

Sebelum melakukan perintah explain plan, terlebih dahulu buat table PLAN_TABLE dengan menggunakan script utlxplan.sql yang diambil dari \%ORACLE_HOME%\RDBMS\ADMIN.

Setelah itu table PLAN_TABLE dapatdigunakan seperti contoh berikut :
SQL>explain plan
Set statement_id=’siswaexp’
Into plan_table for
Select * from SISWA where semester=5;
Dalam PLAN_TABLE rencana eksekusi diatas dikenal dengan nama siswaexp yang terdefinisikan pada kolom statement_id.
Untuk melihat rencana eksekusi dari siswaexp, digunakan perintah SELECT berikut :

SELECT LPAD(‘’,2*Level)| |Operation| |’ ‘| |Options| |’ ‘| |Object_Name Q_Plan
FROM plan_table
WHERE statement_id=’siswaexp’
CONNECT BY PRIOR id=parent_id AND statement_id=’siswaexp’
START WITH id=0 AND statement_id=’siswaexp’;

Contoh hasil dari eksekusi query tersebut :

Q_PLAN

SELECT STATEMENT

            TABLE ACCESS FULL SISWA

Output tersebut dibaca mulai dari  yang condong paling dalam yaitu : TABLE ACCESS FULL SISWA. Dikarenakan klausa WHERE melibatkan kolom semester namun kolom semester tidak ada index-nya, maka Oracle melakukan full table scan. Setelah seluruh table siswa selesai dibaca, selanjutnya adalah SELECT STATEMENT yang berfungsi untuk menampilkan hasil query.

3. Faktor Lain yang Berpengaruh Terhadap Kecepatan Akses Data
Faktor yang berpengaruh terhadap kecepatan akses data tidak hanya pada optimasi perintah SQL,tapi terhadap hal-hal lain yang berpengaruh.Faktor lain yang berpengaruh terhadap kecepatan akses data yaitu optimasi aplikasi dan penggunaan cluster dan index.
Diantaranya adalah optimasi aplikasi dan penggunaan cluster index.
  • Optimasi Aplikasi
Dalam pembuatan aplikasi yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien,yang dapat mendukung kecepatan akses seperti index dan cluster. Apakah desain database sudah melakukan normalisasi data secara tepat.Apakah aplikasi sudah sesuai aplikasi sudah berjalan secara optimal sesuai tujuan.Apakah query sudah optimal dan sesuai dengan aplikasi.
  • Cluster dan Index
Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dala suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di query.
Cluster dimaksudkan untuk mengurangi keborosan dalam melakukan manajemen terhadap struktur data di dalam disk, sehingga sistem berkas tidak akan mengalokasikan sektor disk fisik, tetapi sekumpulan sektor yang saling bedekatan.

Indeks atau index dalam database (basisdata) yaitu untuk meningkatkan kecepatan dalam meretrieve data, 
di suatu database, indeks atau index memungkinkan program database menemukan data di suatu tabel tanpa menelusuri seluruh tabel.
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.

Sumber Referensi :
lecturer.eepis-its.edu/~tessy/lecturenotes/db2/bab4.pdf