Sabtu, 17 Juli 2010

RELASI TABEL PADA MYSQL

RELASI TABEL PADA MYSQL

Mungkin banyak dari Om-om dan Tante-tante sekalian yang masih bingung dengan bagaimana cara membuat relasi antar tabel pada database MySQL?. (pembahasan ini sudah basi blom yaaa?!.)

Ngomongin udah basi apa belum, bodo amat lah, saya juga baru belajar tentang relasi antar tabel pada database MySQL. Nah dari pertapaan ini saya ingin berbagi dengan kalian semua (semoga dengan berbagi ilmu pengetahuan, kita semakin dijauhkan dari kebodohan, amin).

Ok, kita mulai saja pembahasannya sebelum semuanya tertidur. Apa saja yang perlu dipersiapkan?.

- Sesajen (Kopi hitam dan rokok, buat yg doyan aja!).

- Install MySQL-nya dulu yaa, disini saya memakai Apache2Triad 1.5.4.

InnoDB

Sedikit penjelasan biar keliatan Expert. :-p

Di MySQL itu default Storage Enginenya MyISAM, katanya sih MyISAM tidak mendukung adanya relasi database dan transaksi. Nah untuk itu kita bisa menggunakan Storage Engine InnoDB sebagai solusinya.

Pertama-tama kita harus mengecek apakah InnoDB sudah diaktifkan apa belum. Caranya:

- Buka phpmyadmin, klik menu Storage Engines sehingga muncul tampilan sebagai berikut:

Apabila InnoDB telah aktif, maka linknya akan berwarna biru, tapi jika masih nonaktif maka linknya berwarna abu-abu. Dan bagi yang belum aktif, ikuti langkah-langkah berikut untuk mengaktifkan InnoDB kalian:

- Buka file “my.ini” menggunakan notepad (kalau di kompi saya file ini tersimpan di folder C:\WINDOWS, kalau gak ada cari sendiri yaaa!. :-p)

- Cari tulisan “skip-innodb”, kemudian beri tanda # (pagar) agar menjadi “# skip-innodb”.

- Hilangkan seluruh tanda # (pagar) dan beri sedikit modifikasi pada baris berikut:

1. “#innodb_log_group_home_dir = C:/apache2triad/mysql/iblogs/”

2. “#innodb_data_file_path = ibdata1:200M”

3. “#innodb_data_home_dir = C:/apache2triad/mysql/ibdata/”

4. “#innodb_flush_log_at_trx_commit=1”

5. “#innodb_log_arch_dir = C:/apache2triad/mysql/iblogs/”

6. “#innodb_log_file_size=30M”

7. “#innodb_log_buffer_size=8M”

8. “#innodb_buffer_pool_size=80M”

9. “#innodb_additional_mem_pool_size=10M”

10. “#innodb_lock_wait_timeout=50”

Sehingga akan menjadi seperti berikut:

1. “innodb_log_group_home_dir = C:/apache2triad/mysql/logs/”

2. “innodb_data_file_path = ibdata1:200M”

3. “innodb_data_home_dir = C:/apache2triad/mysql/data/”

4. “innodb_flush_log_at_trx_commit=1”

5. “innodb_log_arch_dir = C:/apache2triad/mysql/logs/”

6. “innodb_log_file_size=30M”

7. “innodb_log_buffer_size=8M”

8. “innodb_buffer_pool_size=80M”

9. “innodb_additional_mem_pool_size=10M”

10. “innodb_lock_wait_timeout=50”

Wah, udah aktif tuh InnoDB-nya. (Kalau gak aktif juga bukan salah saya!. :-p)

Membuat Tabel dengan Storage Engine InnoDB

Untuk membuat tabel menggunakan Storage Engine defaultnya MySQL kalian pasti sudah bisa semua khan! (Serasa saya yang paling bodoh!.). Nah kalau kita ingin membuat tabel dengan menggunakan Storage Engine InnoDB caranya gak jauh beda kok, kita tinggal tambah “type=innodb” saja!, Jadi kira-kira sintaknya seperti ini:

create tabel nama_tabel (nama_field1 typefield1, nama_field2 typefield2, primary key (nama_field1)) type=innodb;

contoh:

create tabel test (nama varchar(24), umur int(2), primary key (nama)) type=innodb;

Untuk yang familiar dengan phpmyadmin (seperti saya ini), begini cara merubah tabel type-nya :

Setelah field_name dkk telah diisi dengan benar (menurut anda), tinggal ganti saja Tabel type-nya (lihat tanda panah pada gambar) menjadi “InnoDB”, di-save deh.

Selanjutnya buat beberapa tabel sesuai dengan keinginan anda, tapi ingat di tiap tabel harus ada minimal 1 atau lebih field yang akan saling menghubungkan dengan 1 atau lebih field di tabel lainnya (field yg di relasi adalah Primary Key atau Foreign Key). Untuk me-relasi-nya klik link Relation view (ditunjukkan oleh panah pada gambar).


Nah disini ada fasilitas Cascade On Delete dan Cascade On Update. Cascade On Delete adalah fasilitas untuk melakukan penghapusan isi tabel yang di-relasi-kan ke tabel yang dihapus.

Contohnya:

Misalkan kita memiliki 2 tabel, yaitu tabel test1 dan test2. Tabel test2 di-relasi-kan (mengacu) ke tabel test1 (misalkan yang menghubungkannya kedua tabel tersebut adalah field nama), jadi dari salah satu nama tersebut memiliki beberapa teman (yang tersimpan pada tabel test2). Nah ketika salah satu nama di tabel test1 kita hapus, maka seluruh teman nama tersebut di tabel test2 akan ikut terhapus.

Sedangkan Cascade On Delete adalah fasilitas yang melakukan update otomatis isi tabel yang di-relasi-kan ke tabel yang di-update.

Berhubung kopi sudah habis dan rokok mulai tiris, kita lanjut gan lagi kapan-kapan yaaa!.

Semoga bermanfaat untuk Om-om dan Tante-tante sekalian, dan terima kasih atas kunjungannya!. J

Oiya, jangan lupa kritik dan sarannya yang membangun, yang merubuhkan juga boleh kok. :-p

Sekalian tanya-jawabnya, agar kita cerdas bareng-bareng.

Bedakan kita dan mereka, berani mencoba dan berusaha (saya tidak bertanggung jawab jika kompi kalian meledak yaaa :-p).

“Biarkan Dia Berkreasi”

Tidak ada komentar:

Poskan Komentar