23
4.
Referential Integrity
Foreign key adalah kolom, atau set kolom, yang menghubungkan setiap baris
dalam tabel anak yang berisi foreign key
ke baris dari tabel induk yang
mengandung nilai candidate key yang cocok. Referential integrity berarti, jika
foreign key mengandung nilai,maka nilai tersebut harus mengacu pada nilai
yang ada pada baris yang berlaku dalam tabel induk. Sebagai contoh, jumlah
cabang kolom branchNo
dalam tabel PropertyForRent
menghubungkan
properti untuk baris dalam tabel Branch
di mana properti ditugaskan. Jika
nomor cabang tidak null, maka harus berisi nilai yang valid dari branchNo di
kolom tabel Branch, atau properti ditugaskan untuk kantor cabang yang tidak
valid. Standar ISO mendukung definisi foreign key dengan klausa FOREIGN
KEY
di CREATE
dan ALTER TABLE. Sebagai contoh, untuk menentukan
forign key branchNo dari tabel PropertyForRent, yaitu :
FOREIGN KEY(branchNo) REFERENCES Branch
SQL menolak setiap operasi INSERT
atau UPDATE
yang mencoba untuk
menciptakan nilai foreign key dalam tabel anak tanpa nilai candidate key yang
cocok dalam tabel induk. SQL diperlukan untuk setiap operasi UPDATE atau
DELETE yang mencoba untuk
memperbarui atau menghapus nilai candidate
key dalam tabel induk yang memiliki beberapa baris yang cocok di tabel anak
tergantung pada tindakan referensial ditentukan menggunakan ON UPDATE
dan ON DELETE
dari FOREIGN KEY. Ketika pengguna mencoba untuk
menghapus baris dari tabel induk, dan ada satu baris atau lebih cocok di tabel
anak, SQL mendukung empat pilihan mengenai tindakan yang harus diambil:
a.
CASCADE: Menghapus baris dari tabel induk dan secara otomatis
menghapus baris dalam tabel anak yang sesuai. Karena ini baris dihapus
mungkin sendiri memiliki candidate key
yang digunakan sebagai foreign
key
dalam tabel lain, aturan foreign key untuk tabel adalah trigger, dan
juga secara cascading.
b.
SET NULL: Menghapus baris dari tabel induk dan menetapkan nilai
foreign key
dalam tabel anak ke NULL. Ini hanya berlaku jika kolom
foreign key tidak memiliki kualifikasi NOT NULL yang ditentukan.
|