Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Kunci Asing Komposit dalam MySQL?

Bagaimana untuk Melaksanakan Kunci Asing Komposit dalam MySQL?

Susan Sarandon
Lepaskan: 2024-12-23 15:52:10
asal
463 orang telah melayarinya

How to Implement a Composite Foreign Key in 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`)
);
Salin selepas log masuk

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`);
Salin selepas log masuk

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!

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