Thursday, November 6, 2008

Integritas Data Pada MySQL

,
Beberapa teman saya kebingungan saat mereka berlatih programming yang melibatkan MySQL sebagai databasenya. Mereka bertanya-tanya : "MySQL kok nggak bisa ndetect referensial integrity y??Padahal primary key dan foreign key nya udah di set..". Begitu kira-kira seputar kebingungan mereka... Nah bagi Anda yang mengalami masalah yang sama dengan teman-teman saya, Anda bisa mengikuti panduan yang saya buat di bawah ini :

  1. Cek dulu apakah MySQL sudah terkonfigurasi untuk support InnoDB storage engine. Biasanya secara default sudah enabled. Tapi jika belum, maka yang harus Anda lakukan adalah mencari file my.ini jika Anda menggunakan Windows, atau my.cnf jika Anda menggunakan linux. my.ini / my.cnf biasanya terletak di sekitar folder tempat MySQL terinstall. Pada kasus ini saya tidak bisa memastikan letaknya di mana karena kemungkinan Anda akan menggunakan webserver yang berbeda-beda, misal Apache2Triad, XAMPP atau WAMP.

  2. Jika sudah ketemu, buka file tersebut, dan cari baris dengan statement : skip-innodb. Jika MySQL Anda sudah dikonfigurasi untuk support InnoDB, maka Anda bisa melihat tanda "#" di depan skip-innodb. Maka dari itu, untuk mengkonfigurasi MySQL supaya support InnoDB, berilah tanda "#" di depan skip-innodb. Jika sudah, save my.ini / my.cnf lalu restart MySQL.

  3. Untuk memastikan apakah InnoDB sudah bekerja, masukkanlah kode berikut ke dalam MySQL: [sourcecode language="sql"]CREATE TABLE customer (customer_id INT, name VARCHAR(30), PRIMARY KEY (customer_id)) ENGINE = INNODB ;[/sourcecode]

    Kode di atas untuk membuat table parent. Sekarang buatlah table child dengan mengetikkan kode di bawah ini :

    [sourcecode language="sql"]
    CREATE TABLE customer_sales ( transaction_id INT,amount INT,customer_id INT NOT NULL, PRIMARY KEY(transaction_id), INDEX(customer_id), FOREIGN KEY(customer_id) REFERENCES customer(customer_id)) ENGINE = INNODB;
    [/sourcecode]

  4. Jika sudah cobalah insert data langsung pada tabel anak. Seharusnya akan gagal karena pada tabel parent belum terisi apa-apa. [sourcecode language="sql"]INSERT INTO customer_sales VALUES(1,23,1),(3,81,2);[/sourcecode]

  5. Jika Anda mengalami kegagalan dalam memasukkan data karena menjalankan perintah yang ada pada nomor 4, berarti InnoDB telah benar-benar bekerja pada MySQL. Dan jangan khawatir, integritas data juga akan terjaga pada proses update dan delete. :D

0 comments to “Integritas Data Pada MySQL”

Post a Comment