在M:N关系中填充联结表时与外键约束冲突

时间:2016-03-04 01:23:11

标签: sql-server database

我在名为学生和课程的两个表之间有一个M:N关系...这种关系称为注册。我正在使用SQL Server管理工作室为已注册课程的学生填写注册联结表。我一直收到错误The INSERT statement conflicted with the FOREIGN KEY constraint "Enrolled In". The conflict occurred in database "midterm_project", table "dbo.Students", column 'studentId'.这是什么意思?

这是我的问题:

INSERT INTO [dbo].[Enrollment] (studentId, courseId, semesterId)
                        VALUES(1, 1, 4),
                              (2, 1, 4),
                              (3, 1, 4),
                              (4, 1, 4),
                              (5, 1, 4),
                              (6, 1, 4),
                              (7, 1, 4),
                              (8, 1, 4),
                              (9, 1, 4),
                              (10, 1, 4);

这是我的数据库模型: enter image description here

更新

我忘记了我必须删除我的学生表并创建了它,但从未填充学生表。所以现在我填写了学生表,但是当我使用上面相同的查询填充注册表时,我现在收到以下错误。

The INSERT statement conflicted with the FOREIGN KEY constraint "Has Scores". The conflict occurred in database "midterm_project", table "dbo.Assignments", column 'enrollmentId'.

我做错了什么?

2 个答案:

答案 0 :(得分:1)

由于您的注册表是分配的弱实体,因此您无法在分配前将记录插入注册。 根据您的目标,我设计的图表如下: enter image description here

您可以在插入assignmentsDetail(作业)之前插入注册。如果您希望一个注册包含多个作业,则必须具有用于标识的ID,因为当您有多个作业时,enrollmentId不是唯一的。

答案 1 :(得分:0)

也许您正在添加Students表中不存在的学生。