Saya mungkin berpikiran sempit, tetapi jika saya membuat batasan kunci asing dan baris diperbarui atau dihapus, saya kehilangan koneksi itu jika kolom tabel anak diatur ke NULL.
Apa tujuan menjaga barisan yatim ini dengan sengaja?
foreign-key
null
Derek Downey
sumber
sumber
Jawaban:
Apakah
set null
berguna atau tidak tergantung pada apa yang Anda pilihnull
untuk maksud dalam konteks tertentu - dengan semua kebingungan dan pendapat tentangnull
IMO pendekatan yang masuk akal adalah untuk DBA untukDengan aturan itu, pertimbangkan kasus penggunaan berikut:
null
untuk mewakili toko independen (yaitu toko yang bukan bagian dari rantai)Dalam hal ini, suatu yang
on delete set null
masuk akal. Ada cara lain untuk memodelkan aturan bisnis ini, tetapi ini adalah yang paling sederhana dan jika itu secara akurat sesuai dengan fakta yang Anda pedulikan di dunia nyata, saya sarankan itu sangat okesumber
Sebagian besar kasus penggunaan yang dapat saya pikirkan umumnya adalah dalam bentuk "Yah, kita bisa melakukan sesuatu yang berbeda tetapi kami merasa ingin melakukan ini sebagai gantinya".
Pertimbangkan
owner
bidang bug di sistem pelacakan masalah di perusahaan. Jika John berhenti, pasti semua masalahnya tidak boleh hanya dihapus ketika akunnya dihapus. Meski begitu, beberapa database memungkinkanSET DEFAULT
sebagai tindakan (atau memiliki pemicu melakukan tugas yang sama), dan menjadikanNobody
karyawan sebagai pemilik default masalah dapat menjadi pilihan. Atau kita bisa memilikidisabled
bidang untuk John daripada menghapus catatannya.sumber
RESTRICT
), jika tidak ada alasan lain untuk menunjukkan kesalahan kepada karyawan lama ketika ada yang salah dengan itu!