复合键作为外键(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

回到顶部