Rumah >pangkalan data >tutorial mysql >Bolehkah Lajur Pangkalan Data Tunggal Rujukan Berbilang Kunci Asing?
Kekunci Asing Berbilang Rujukan dalam Lajur Pangkalan Data
Dalam reka bentuk pangkalan data, kekangan kunci asing memainkan peranan penting dalam mengekalkan integriti rujukan dan memastikan ketepatan data. Lazimnya, lajur kunci asing merujuk lajur kunci utama dalam jadual lain, mewujudkan hubungan satu-ke-banyak atau banyak-ke-banyak antara rekod. Walau bagaimanapun, persoalan timbul: Bolehkah kita mentakrifkan satu lajur yang bertindak sebagai kunci asing kepada berbilang jadual?
Bolehkah Lajur Rujukan Berbilang Kunci Asing?
Jawapannya ialah tidak. Menurut prinsip pangkalan data, adalah tidak dibenarkan untuk mempunyai satu lajur merujuk berbilang kunci asing secara serentak. Sekatan ini dikuatkuasakan oleh semua sistem pengurusan pangkalan data hubungan utama (RDBMS).
Penjelasan
Tujuan utama kunci asing adalah untuk mewujudkan pautan langsung antara rekod dalam jadual yang berbeza. Setiap nilai kunci asing harus mengenal pasti baris secara unik dalam jadual yang dirujuk. Percubaan untuk merujuk berbilang kunci asing dalam satu lajur akan melanggar prinsip asas ini.
Alternatif kepada Kunci Asing Berbilang Rujukan
Jika anda perlu mewujudkan hubungan antara rekod dalam berbilang jadual, terdapat pendekatan alternatif untuk dipertimbangkan:
Contoh Menggunakan Kunci Komposit
Pertimbangkan contoh yang disediakan dalam soalan:
CREATE TABLE pdf_created ( `id` INT(10) UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT, `pdf_id` INT(10) NOT NULL, `item_type` INT(3) UNSIGNED NOT NULL, `item_id` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`id`, `item_type`, `item_id`) ); CREATE TABLE `header` ( `id` INT(10) UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT, `title` VARCHAR(255) ); CREATE TABLE `service` ( `id` INT(10) UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT, `desc` VARCHAR(65535) NOT NULL ); CREATE TABLE `product` ( `id` INT(10) UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT, `desc` VARCHAR(65535) NOT NULL );
Dalam skema ini, lajur item_id dalam jadual pdf_created boleh merujuk kedua-dua lajur id dalam jadual produk dan lajur id dalam jadual perkhidmatan. Ini dicapai dengan mentakrifkan kunci utama komposit pada jadual pdf_created menggunakan kedua-dua lajur id dan item_type.
Kesimpulan
Walaupun tidak mungkin untuk mempunyai satu lajur secara langsung merujuk berbilang kunci asing dalam pangkalan data hubungan, pendekatan alternatif seperti jadual gabungan atau kunci komposit boleh digunakan untuk mewujudkan hubungan yang diperlukan antara rekod.
Atas ialah kandungan terperinci Bolehkah Lajur Pangkalan Data Tunggal Rujukan Berbilang Kunci Asing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!