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!