-->
Sejak mulai terjun kedalam dunia persilatan Sistem informasi beberapa tahun silam.. (lebay.com) :). Penulis sering kali menemukan kurangnya pemahaman para pengembang sistem informasi dalam menjaga konsistensi data antar tabel.
Seringkali penulis menjumpai bahwa jumlah data sebenarnya pada tabel berbeda dengan jumlah data yang terdapat pada laporan.
Banyak faktor yang mungkin terjadi menyebabkan hal tersebut, diantaranya yaitu terhapusnya data yang menjadi relasi antar tabel atau data yang diinputkan tidak memiliki kesamaan dengan tabel relasinya. Untuk Lebih jelasnya perhatikan gambar dibawah ini :
Pada gambar diatas Anda dapat melihat bahwa field artist_id yang bernilai 4 tidak memiliki relasi dengan tabel yang berada diatasnya. Sehingga apabila kita membuat view dengan kode sql berikut :
“Select artist_name, album_name from album, artist where artist. artist_id= album. artist_id”
Maka anda hanya akan menjumpai 2 buah record saja.
Hal ini tentu menjadi masalah karena sebenarnya kita memiliki 3 buah data pada tabel album. Hal inilah yang disebut dengan inkonsitensi data yang disebabkan adanya perbedaan data pada kunci primary dan kunci foreign. Dalam istilah database kita mengenal ini dengan sebutan Referential Integrity.
Refrential Integrity (RI) dalam terjemahan bebas dapat diartikan sebagai “konsep dalam database yang memastikan hubungan antar tabel tetap terjaga konsisten”. Biasanya untuk mempermudah para developer, sudah disediakan fitur untuk menjaga RI ini.
Nah.. pada kasus kali ini, penulis akan mecontohkan pembuatan RI pada database MySQL. Untuk itu, terlebih dahulu Anda harus membuat tabel dengan struktur data dibawah ini atau anda dapat melakukan import data dari file ini.
Refrential Integrity (RI) dalam terjemahan bebas dapat diartikan sebagai “konsep dalam database yang memastikan hubungan antar tabel tetap terjaga konsisten”. Biasanya untuk mempermudah para developer, sudah disediakan fitur untuk menjaga RI ini.
Nah.. pada kasus kali ini, penulis akan mecontohkan pembuatan RI pada database MySQL. Untuk itu, terlebih dahulu Anda harus membuat tabel dengan struktur data dibawah ini atau anda dapat melakukan import data dari file ini.
Pastikan kedua table diatas dibuat dengan engine InnoDB.
Mengapa InnoDB ?? Karena engine innoDB merupakan salah satu engine pada MySQL yang mendukung proses pemberian RI.
Sebelum memberikan RI, kita harus terlebih dahulu mengenal operasi yang berlaku pada foreign key. Operasi ini akan berlaku pda saat ON UPDATE maupun ON DELETE pada foreign key. Berikut adalah penjelasannya :
1. CASCADE, Apabila terjadi proses penghapusan atau pengubahan data terhadap table Primary, maka MySQL juga akan turut menghapus atau mengubah data yang sama pada table Foreign Key.
2. RESTRICT, Apabila terjadi proses penghapusan data atau pengubahan data terhadap table Primary Key, maka MySQL tidak akan menghapus atau mengubah data yang sama pada table Foreign Key.
3. SET NULL, Apabila terjadi proses penghapusan data atau pengubahan data terhadap table Primary Key, maka MySQL akan mengosongkan data yang sama pada table Foreign Key.
4. NO ACTION, Keyword ini berguna agar MySQL menolak penghapusan atau pengubahan data pada table Primary Key apabila masih terdapat data yang sama pada table Foreign Key.
Nah.. sekarang kita akan menambahkan RI pada table album dengan mengetikan perintah SQL berikut pada phpMyadmin :
“alter table album add foreign key (artist_id) references artist(artist_id) on delete restrict on update cascade”
Apa yang terjadi ?? Tentu saja Anda menemukan pesan Error.!
2. RESTRICT, Apabila terjadi proses penghapusan data atau pengubahan data terhadap table Primary Key, maka MySQL tidak akan menghapus atau mengubah data yang sama pada table Foreign Key.
3. SET NULL, Apabila terjadi proses penghapusan data atau pengubahan data terhadap table Primary Key, maka MySQL akan mengosongkan data yang sama pada table Foreign Key.
4. NO ACTION, Keyword ini berguna agar MySQL menolak penghapusan atau pengubahan data pada table Primary Key apabila masih terdapat data yang sama pada table Foreign Key.
Nah.. sekarang kita akan menambahkan RI pada table album dengan mengetikan perintah SQL berikut pada phpMyadmin :
“alter table album add foreign key (artist_id) references artist(artist_id) on delete restrict on update cascade”
Apa yang terjadi ?? Tentu saja Anda menemukan pesan Error.!
Hal ini terjadi karena sebelum memasang RI kita harus memastikan terlebih dahulu bahwa data Kunci Primary dan Foreign Key Telah konsisten.
Sekarang coba hapus record pada tabel album dengan artist_id=’4’ dan ketikan kembali kode diatas
Sekarang kita akan emncoba apakah benar MySQL akan menjaga konsistensi dari data yang ada dengan melakukan pengubahan artist_id pada table artist.
Data Pada Tabel Anak (Album)
Data Pada Tabel Induk (Artist)
Bagaimana dengan penghapusan data ?? karena kita tadi menggunakan ON DELETE no action, maka ketika kita akan penghapusan pada kunci primary yang masih terdapat kunci foreign key nya akan ditolak.
Nah.. Sekian dulu tutorial kali ini. Sampai jumpa di tutorial selanjutnya
“You Don’t Nedd To Be Great To Do Something, But U Need To Do Something To Be Great”
“You Don’t Nedd To Be Great To Do Something, But U Need To Do Something To Be Great”
Posting Komentar