首頁 >資料庫 >mysql教程 >如何在 MySQL 中使用複合主鍵和單列外鍵連結表?

如何在 MySQL 中使用複合主鍵和單列外鍵連結表?

Susan Sarandon
Susan Sarandon原創
2024-12-26 03:15:11447瀏覽

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

使用複合主鍵和外鍵連結表

在SQL 資料庫設計領域,您可能會遇到表格的主鍵包含的情況多個列,形成一個複合鍵。使用外鍵在此類表之間建立關係可能是一項導航任務。

考慮涉及兩個表格「tutorial」和「group」的給定場景。 “tutorial”表具有由“be​​ggingTime”、“day”和“tutorId”組成的複合主鍵,而“group”表擁有一個自動遞增主鍵“groupId”。問題出現了:我們如何能無縫關聯這些表?

MySQL 文件提供了一個解決方案:可以在「group」中建立外鍵映射,引用「tutorial」中的複合主鍵。然而,這涉及到向「group」表添加額外的列,「tutorial」中的每個對應主鍵一列。

例如,新增這些欄位並在「group」表中聲明外鍵將建立關係:

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

值得注意的是,從效能角度來看,這種方法可能不是最佳的。 SQL 資料庫引擎針對由單列組成的主鍵進行了最佳化。因此,請考慮重新設計“教程”表以使用代理主鍵而不是複合主鍵。此策略將提高效能,因為它更符合 SQL 的結構方式。

以上是如何在 MySQL 中使用複合主鍵和單列外鍵連結表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn