Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh memautkan jadual dengan kunci utama komposit dan kunci asing satu lajur dalam MySQL?

Bagaimanakah saya boleh memautkan jadual dengan kunci utama komposit dan kunci asing satu lajur dalam MySQL?

Susan Sarandon
Susan Sarandonasal
2024-12-26 03:15:11503semak imbas

How can I link tables with a composite primary key and a single-column foreign key in MySQL?

Memautkan Jadual dengan Kekunci Utama dan Kekunci Asing Komposit

Dalam bidang reka bentuk pangkalan data SQL, anda mungkin menghadapi situasi di mana kunci utama jadual mengandungi berbilang lajur, membentuk kunci komposit. Mewujudkan perhubungan antara jadual sedemikian menggunakan kekunci asing boleh menjadi tugas untuk menavigasi.

Pertimbangkan senario yang diberikan melibatkan dua jadual, 'tutorial' dan 'kumpulan'. Jadual 'tutorial' menampilkan kunci utama komposit yang terdiri daripada 'beggingTime', 'day' dan 'tutorId', manakala jadual 'group' mempunyai kunci primer auto-incrementing 'groupId'. Timbul persoalan: bagaimanakah kita boleh mengaitkan jadual ini dengan lancar?

Dokumentasi MySQL menawarkan penyelesaian: adalah mungkin untuk mencipta pemetaan kunci asing dalam 'kumpulan' merujuk kunci utama komposit dalam 'tutorial'. Walau bagaimanapun, ini melibatkan penambahan lajur tambahan pada jadual 'kumpulan', satu untuk setiap kunci utama yang sepadan dalam 'tutorial'.

Sebagai contoh, menambah lajur ini dan mengisytiharkan kunci asing dalam jadual 'kumpulan' akan mewujudkan perhubungan:

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`);

Perlu diambil perhatian bahawa pendekatan ini mungkin tidak optimum dari perspektif prestasi. Enjin pangkalan data SQL dioptimumkan untuk kunci utama yang terdiri daripada lajur tunggal. Oleh itu, pertimbangkan untuk mereka bentuk semula jadual 'tutorial' untuk menggunakan kunci utama pengganti berbanding kunci utama komposit. Strategi ini akan meningkatkan prestasi kerana ia lebih sejajar dengan cara SQL distrukturkan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memautkan jadual dengan kunci utama komposit dan kunci asing satu lajur dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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