Skip to main content

Memahami Referential Integrity Saat Membuat Relasi di Access

Integrity rules adalah peraturan yang dijalankan saat Access ingin mengperbarui, menghapus, dan melakukan operasi pada record dalam tabel yang mengikuti peraturan ini. Secara prinsip, database relasional mendefinisikan beberapa peraturan yang ditujukan untuk menjalankan keterpaduan antar tabel secara referensial atau disebut juga referential integrity. Artinya, tabel yang mempunyai relasi dengan tabel lain harus disinkronisasikan. Access mempunyai peraturan tersendiri yang dijalankan dengan menggunakan ACE Database Engine.


Referential integrity mengatur secara ketat, tabel yang saling berelasi dengan menggunakan field yang menjadi kunci. Dengan referential integrity, database engine memeriksa field yang menjadi kunci saat sebuah record ditambahkan, dihapus, atau diperbarui. Jika ada perubahan nilai pada field kunci dapat mengacaukan relasi tabel, maka tabel itu melanggar referential integrity. Supaya tidak melanggar aturan referential integrity, kita harus mengatur tabel-tabel yang berelasi untuk tetap sinkron.

Gambar di atas menjelaskan sebuah hubungan antara tabel tblRekUtama dengan tblBudget. Tabel tblRekUtama mempunyai relasi one-to-many dengan tblBudget melalui field KodeRek. Field KodeRek yang ada di tabel tblRekUtama adalah primary key. Foreign key berada di field KodeRek pada tabel tblBudget. Dalam relasi ini, tblRekUtama adalah tabel parent (atau master), sedangkan tblBudget adalah tabel child (atau detail). Dengan dua field yang sama seperti ini, kita bisa menghindari record yang tidak mempunyai induk. Record yang tidak mempunyai induk atau orphaned record adalah record pada tabel detail yang tidak mempunyai relasi dengan record yang ada di tabel master. Pada Gambar di atas, seluruh record yang ada di tblBudget mempunyai relasi dengan record yang ada di tblRekUtana. Dengan demikian, kita bisa memastikan bahwa tabel tblRekUtama dan tblBudget mematuhi referential integrity.

Di bagian bawah dari kotak dialog Edit Relationships, ada tiga pilihan yang digunakan untuk mengatur referential integrity. Ketiga pilihan ini adalah:
  1. Enforce referential integrity: nilai defaultnya adalah false (kosong atau tidak diberi tanda centang). Tujuan penggunaan referential integrity adalah untuk mencegah adanya orphan record atau record di tabel detail yang tidak mempunyai relasi dengan tabel master. Bila tidak dicentang, maka referential integrity diabaikan yang berarti orphan record dibiarkan terjadi. Bila dicentang, maka aturan referential integrity ini berlaku:
    1. Kita tidak diperbolehkan memasukkan sebuah nilai pada field foreign key yang ada di tabel detail. Bila sebuah nilai dimasukkan di tabel detail, sementara di tabel master tidak ada, maka akan muncul orphan record.
    2. Kita tidak boleh menghapus sebuah record di tabel master yang mempunyai record di tabel detail dalam mana nilai field primary key di tabel master ada di field foreign key dari tabel detail. Namun demikian, kita bisa saja menghapus record ini bila Cascade Delete Related Records diberi tanda centang.
    3. Kita tidak boleh mengedit sebuah record di tabel master yang mempunyai record di tabel detail dalam mana nilai field primary key di tabel master ada di field foreign key dari tabel detail, karena dapat mengakibatkan orphan record. Namun demikian, kita bisa saja mengedit record ini bila Cascade Update Related Records diberi tanda centang.
  2. Cascade Update Related Records: dalam situasi tertentu, kita mungkin ingin mengubah nilai primary key di tabel master di mana nilai itu juga ada di field foreign key dari tabel detail. Dalam kasus ini, kita dapat meminta Access untuk secara otomatis memperbarui nilai di field foreign key dari tabel detail. Dengan demikian, pembaruan data itu dapat dilakukan dengan sempurna sehingga tidak terjadi orphan record. Caranya, beri tanda centang pada Cascade Update Related Records. Cara ini harus dilakukan pada tabel-tabel yang mempunyai relasi pada field yang sama. Jadi, misalnya ada 3 tabel yang berelasi dengan field yang sama, maka tanda centang harus diberikan pada setiap opsi Cascade Update Related Records dari relasi itu.
  3. Cascade Delete Related Records: hal yang sama juga terjadi bila ingin menghapus sebuah record di tabel master yang mempunyai record di tabel detail dalam mana nilai field primary key di tabel master ada di field foreign key dari tabel detail. Caranya, beri tanda centang pada Cascade Delete Related Records. Cara ini harus dilakukan pada tabel-tabel yang mempunyai relasi pada field yang sama. Jadi, misalnya ada 3 tabel yang berelasi dengan field yang sama, maka tanda centang harus diberikan pada setiap opsi Cascade Delete Related Records dari relasi itu.
Bila aturan referential integrity tidak bisa diterapkan, maka ada beberapa kemungkinan penyebab:
  1. Field pada tabel master (atau parent) bukan primary key atau unik. Solusinya: pastikan field pada tabel master adalah field yang menjadi primary key.
  2. Kedua field yang saling berelasi harus mempunyai tipe data yang sama, kecuali untuk tipe data AutoNumber di tabel master. Untuk tipe data AutoNumber di tabel master, tipe data field di tabel detail adalah Number dengan properti Field Size sama dengan Long Integer.
  3. Kedua tabel harus berada dalam database yang sama, tidak boleh berupa tabel linked dari database lain.
  4. Ada orphan record di tabel detail. Orphan record terjadi bila ada tabel detail (atau child) yang tidak mempunyai master (atau parent).

Comments

Posting Terpopuler

Membuat Fungsi Untuk Menghitung Pajak Penghasilan PPh 21 di MS Access

Normalisasi, Denormalisasi, dan Anomali Database

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access