复合键作为外键(sql)
这是我的两个关注表:
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
表格中
FOREIGN KEY (`beggingTime`,`day`,`tutorId`) REFERENCES tutorial(`beggingTime`,`day`,`tutorId`)
正如史蒂文(Steven)在以下注释中提到的那样,您应该尝试重新构造它,以便教程表使用实际的主键(即使它只是身份代理键)。由于SQL是为这种类型的关系而不是复合关系而构建的,因此可以提高性能。
以上是 复合键作为外键(sql) 的全部内容, 来源链接: utcz.com/qa/427615.html