Adakah Rujukan Pekeliling dalam SQL Boleh Diterima?
Dalam reka bentuk pangkalan data, kebimbangan umum timbul apabila berurusan dengan jadual yang merujuk antara satu sama lain dalam cara pekeliling. Untuk memahami konsep ini, mari kita periksa pangkalan data sampel:
CREATE TABLE products ( ID int(10) unsigned NOT NULL AUTO_INCREMENT, NAME varchar(255) NOT NULL, ... DEFAULT_PICTURE_ID int(10) unsigned DEFAULT NULL, FOREIGN KEY (DEFAULT_PICTURE_ID) REFERENCES products_pictures (ID) ); CREATE TABLE products_pictures ( ID int(10) unsigned NOT NULL AUTO_INCREMENT, IMG_PATH varchar(255) NOT NULL, PRODUCT_ID int(10) unsigned NOT NULL, FOREIGN KEY (PRODUCT_ID) REFERENCES products (ID) );
Dalam senario ini, jadual produk mempunyai lajur DEFAULT_PICTURE_ID yang merujuk kepada jadual products_pictures, manakala jadual products_pictures mempunyai lajur PRODUCT_ID yang merujuk kembali kepada jadual produk. Ini mewujudkan rujukan bulat.
Akibat Rujukan Pekeliling
Rujukan bulat dalam SQL boleh membawa kepada isu, terutamanya jika rujukan diisytiharkan sebagai BUKAN NULL. Memasukkan atau mengemas kini rekod dalam reka bentuk sedemikian menjadi bermasalah kerana situasi ayam-dan-telur: jadual manakah yang perlu dikemas kini dahulu? Selain itu, pemadaman rekod boleh mengakibatkan pelanggaran integriti rujukan.
Alternatif Yang Boleh Diterima
Terdapat beberapa pendekatan untuk menangani rujukan pekeliling dalam SQL.
Kesimpulan:
Walaupun rujukan bulat dalam SQL mungkin menggoda untuk perhubungan pemodelan, ia boleh menimbulkan komplikasi dan isu prestasi. Memilih salah satu alternatif yang lebih sesuai, seperti kunci asing yang boleh dibatalkan, jadual sambung atau kekangan yang boleh ditunda, adalah disyorkan untuk reka bentuk pangkalan data yang boleh dipercayai dan boleh diselenggara.
Atas ialah kandungan terperinci Bilakah Rujukan Pekeliling dalam SQL Boleh Diterima?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!