这是我的两个关注表:
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是为这种类型的关系而不是复合关系而构建的,因此可以提高性能。
问题内容: 如何使用复合主键作为外键?看来我的尝试无效。 问题答案: 该行: 是错的。您不能那样使用,这只是父表中PK约束的名称。要将复合主键用作外键,您必须向子表中添加相同数量(组成PK)的相同数据类型的列,然后在定义中使用这些列的组合:
如何将复合主键用作外键?看来我的尝试没有成功。
我发现很难创建复合外键。我想要一个会话表,它同时具有'movieid'和'cinemaid'作为复合外键。这是因为一个会话需要电影和电影院位置。 我当前的模式如下所示: Schema::create('session',函数(Blueprint$表){ }); 关于如何在laravel中创建复合外键,我找不到太多信息。我发现的最好的事情是: http://www.geexie.com/compos
我有以下表格,如何将它们映射到JPA实体: 事件表与会议表具有一对多的关系。我如何在JPA中映射这种双向关系?
我在jpa/Hibernate中映射复合键时遇到了问题。父实体和子实体都具有复合主键。 在运行时保存它时会出现以下异常: 我认为这是虚假的,因为有getter和setter。如果在priceRequestLegModel上使用mappedby=“leg”,在allocationModel上使用@mapsid,也会出现同样的错误。有人能指出我在这里做错了什么吗?
它应该允许独立地更新表,并在父行被删除时删除子行。