Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Kunci Asing Komposit dalam MySQL?
Kunci Asing Komposit dalam SQL
Reka bentuk pangkalan data selalunya melibatkan penciptaan perhubungan antara jadual. Apabila kunci utama satu jadual terdiri daripada berbilang lajur, ia menjadi mencabar untuk memautkannya kepada kunci asing dalam jadual lain. Soalan ini meneroka cara mewujudkan hubungan antara dua jadual dengan kunci primer komposit dan kunci asing.
Pernyataan Masalah
Pertimbangkan dua jadual berikut:
CREATE TABLE IF NOT EXISTS `tutorial` ( `beggingTime` time NOT NULL, `day` varchar(8) NOT NULL, `tutorId` int(3) NOT NULL, `maxMembers` int(2) NOT NULL, `minMembers` int(1) NOT NULL, PRIMARY KEY (`beggingTime`,`day`,`tutorId`), KEY `tutorId` (`tutorId`) ); CREATE TABLE IF NOT EXISTS `group` ( `groupId` tinyint(3) NOT NULL AUTO_INCREMENT, `status` varchar(20) NOT NULL, `groupName` varchar(50) NOT NULL, PRIMARY KEY (`groupId`) );
Objektifnya adalah untuk mencipta medan dalam jadual kumpulan yang memaut ke kunci utama komposit dalam jadual tutorial. Timbul persoalan: bagaimanakah kita boleh mengaitkan jadual ini dengan berkesan?
Penyelesaian
Menurut dokumentasi MySQL, adalah mungkin untuk menyediakan pemetaan kunci asing kepada kunci komposit. Ini memerlukan mencipta berbilang lajur dalam jadual kunci asing:
ALTER TABLE `group` ADD COLUMN `beggingTime` time NOT NULL; ALTER TABLE `group` ADD COLUMN `day` varchar(8) NOT NULL; ALTER TABLE `group` ADD COLUMN `tutorId` int(3) NOT NULL; ALTER TABLE `group` ADD FOREIGN KEY (`beggingTime`,`day`,`tutorId`) REFERENCES tutorial(`beggingTime`,`day`,`tutorId`);
Pendekatan ini mencipta lajur tambahan dalam jadual kumpulan yang sepadan dengan komponen kunci utama komposit dalam jadual tutorial.
Pengesyoran
Walaupun mencipta kunci asing komposit adalah mungkin, ia bukan selalunya merupakan pilihan reka bentuk yang terbaik. Seperti yang dicadangkan oleh respons lain, adalah disyorkan untuk mempertimbangkan semula reka bentuk jadual dan menggunakan kunci utama satu lajur untuk jadual tutorial. Ini akan meningkatkan prestasi pangkalan data dan memudahkan pengurusan perhubungan.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kunci Asing Komposit dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!