这是我的两个关注表:
CREATE TABLE IF NOT EXISTS `tutorial` ( `beggingTime` time NOT NULL, `day` varchar(8) NOT NULL, `tutorId` int(3) NOT NULL, `maxMembers` int(2) NOT NULL, `minMembers` int(1) NOT NULL, PRIMARY KEY (`beggingTime`,`day`,`tutorId`), KEY `tutorId` (`tutorId`) ) CREATE TABLE IF NOT EXISTS `group` ( `groupId` tinyint(3) NOT NULL AUTO_INCREMENT, `status` varchar(20) NOT NULL, `groupName` varchar(50) NOT NULL, PRIMARY KEY (`groupId`) )
我想在“组”中创建一个字段,该字段将链接到“教程”中的复合唯一键。所以我想我的问题是,如何关联这些表?我必须为“教程”中的每个主键在“组”中创建外键字段吗?
根据mySQL文档,您应该能够设置到组合的外键映射,这将要求您创建多个列。
添加列并将其放在group表格中
group
FOREIGN KEY (`beggingTime`,`day`,`tutorId`) REFERENCES tutorial(`beggingTime`,`day`,`tutorId`)
正如史蒂文(Steven)在以下注释中提到的那样,您应该尝试重新构造它,以便教程表使用实际的主键(即使它只是身份代理键)。由于SQL是为这种类型的关系而不是复合关系而构建的,因此可以提高性能。