首页 > 数据库 > mysql教程 > 如何在 MySQL 中使用复合主键和单列外键链接表?

如何在 MySQL 中使用复合主键和单列外键链接表?

Susan Sarandon
发布: 2024-12-26 03:15:11
原创
442 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板