使用复合主键和外键链接表
在 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中文网其他相关文章!