Rumah > pangkalan data > tutorial mysql > Bolehkah Lajur Tunggal Berfungsi sebagai Kunci Asing Berbilang dalam SQL?

Bolehkah Lajur Tunggal Berfungsi sebagai Kunci Asing Berbilang dalam SQL?

Patricia Arquette
Lepaskan: 2024-12-24 09:21:26
asal
199 orang telah melayarinya

Can a Single Column Serve as Multiple Foreign Keys in SQL?

Merujuk Satu Lajur sebagai Kekunci Asing Berbilang

Dalam reka bentuk pangkalan data, mungkin terdapat situasi di mana anda ingin mewujudkan hubungan antara jadual yang berbeza menggunakan satu lajur sebagai kunci asing untuk berbilang jadual sasaran. Walau bagaimanapun, senario khusus ini, seperti yang dibentangkan dalam coretan kod SQL di bawah, tidak boleh dilaksanakan:

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,
    `quantity` INT(3) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `FK_pdf_id` (`pdf_id`),
    CONSTRAINT `FK_pdf_id` FOREIGN KEY (`pdf_id`) REFERENCES `pdf` (`id`),
    KEY `FK_item_type` (`item_type`),
    CONSTRAINT `FK_item_type` FOREIGN KEY (`item_type`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
    KEY `FK_item_id` (`item_id`),
    CONSTRAINT `FK_item_id` FOREIGN KEY (`item_id`) REFERENCES `product` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT `FK_item_id` FOREIGN KEY (`item_id`) REFERENCES `service` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT `FK_item_id` FOREIGN KEY (`item_id`) REFERENCES `header` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);
Salin selepas log masuk

Sebabnya ialah penguatkuasaan kekangan kunci asing yang memerlukan satu lajur untuk memadankan kunci utama dalam berbilang jadual adalah mustahil dalam teori pangkalan data hubungan. Walaupun anda boleh membuat lajur dalam jadual pdf_created yang merujuk lajur yang sepadan dalam produk, perkhidmatan, pengepala dan jadual item, mewujudkan kekangan kunci asing untuk setiap rujukan ini secara serentak adalah tidak dibenarkan.

Walau bagaimanapun, adalah mungkin. untuk menggunakan nilai lajur yang dirujuk untuk cantuman tanpa menentukan kekangan kunci asing yang jelas. Kunci asing pada asasnya ialah lajur yang mengandungi nilai kunci utama jadual yang berkaitan. Ini membolehkan anda untuk menyertai rekod antara jadual berdasarkan nilai kunci asing yang dikongsi mereka. Dalam senario yang diberikan, anda boleh meminta lajur item_id dalam jadual pdf_created merujuk kunci utama dalam produk, perkhidmatan, pengepala dan jadual item. Dengan berbuat demikian, anda boleh menyertai jadual pdf_created dengan mana-mana jadual sasaran ini menggunakan lajur item_id sebagai syarat penyertaan.

Atas ialah kandungan terperinci Bolehkah Lajur Tunggal Berfungsi sebagai Kunci Asing Berbilang dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan