使用複合主鍵和外鍵連結表
在SQL 資料庫設計領域,您可能會遇到表格的主鍵包含的情況多個列,形成一個複合鍵。使用外鍵在此類表之間建立關係可能是一項導航任務。
考慮涉及兩個表格「tutorial」和「group」的給定場景。 “tutorial”表具有由“beggingTime”、“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中文網其他相關文章!