Dalam rancangan suatu database yang relasional, konsep
Referential Integrity (Keterpaduan / kesatuan
referensial) sangatlah penting, untuk menghindari
terjadi kesalahan-kesalahan pada data. Pada RDBMS
seperti Oracle, MS SQL Server, PostgreSQL(dan database
database lain yang mendukung PL/SQL mungkin) kita
mengenal yang namanya TRIGGER yang sangat berguna
untuk menjaga ke-RI-an relasi-relasi antar entity pada
database. TRIGGER dijalankan ketika ada perintah DML
(Data Manipulation Language) pada suatu tabel.
Yang menjadi masalah adalah pada MySQL versi 4 dan 3
kebawah belum mendukung yang namanya STORED PROCEDURE
dan TRIGGER (saya baru denger baru bisa di MySQL versi
5 dan itupun masih beta version). Alhasil Referential
Integrity hanya bisa diterapkan pada level platform,
pada skrip PHP yang kita buat misalnya. Pada contoh di
bawah ini misalnya kita mau menghapus record dari
tabel "Subyek" dan mencocokkan data yang ada pada
tabel "Katalog_Subyek" :
<?php
$idDataSubyek = intval($_GET["id_subyek"]);
/* cek apakah subyek ini terdapat pada tabel
Katalog_subyek
*/
$query = mysql_query("SELECT * FROM Katalog_subyek
WHERE id_subyek=$idDataSubyek");
/* cek apakah subyek yang akan dihapus terdapat pada
salah satu atau beberapa record di katalog_subyek
*/
if(mysql_num_rows($query) > 0){
$error = "Terdapat dokumen yang memiliki subyek
ini<br>\nData tidak berhasil di hapus<br>\n";
exit($error);
}
else {
$deleteSubyek = mysql_query("DELETE FROM Subyek
WHERE id_subyek=$idDataSubyek");
}
echo "Data subyek telah berhasil terhapus\n";
?>
TRIGGER dan STORED PROCEDURE tersimpan pada DBMS jadi
tingkat keamanannya lebih tinggi dibandingkan dengan
pada level platform, apalagi bila ada user yang
mengutak-atik database langsung tanpa melalui
platform, karena TRIGGER tidak tergantung pada
platform.
Kira-kira teman-teman punya solusi untuk menjaga
Referential Integrity pada level DBMS di MySQL
ga(tanpa menggunakan MySQL 5 tentunya)
Terima KAsih..
^______________________^
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
------------------------ Yahoo! Groups Sponsor --------------------~-->
Give the gift of life to a sick child.
Support St. Jude Children's Research Hospital's 'Thanks & Giving.'
http://us.click.yahoo.com/h8TXDC/6WnJAA/HwKMAA/C1XolB/TM
--------------------------------------------------------------------~->
--
Towards cyber libraries to support information society in Indonesia.
Joining ICS-isis by sending mailto:[EMAIL PROTECTED]
Visit ICS-Portal at http://digilib.binus.ac.id/ics/index.php
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ics-isis/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/