SQL在被引用表X中没有与外键X的引用列的列表匹配的主键或候选键。大神求解!!!

xst_HY 2016-04-12 09:28:22
作业是做一个学生选课系统,建表的时候就报出
消息 1776,级别 16,状态 0,第 1 行
在被引用表 '开课信息' 中没有与外键 'FK__教师授课__5535A963' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息。
找了好多方法都不行,大神门求解啊!!!

create table 学生信息(
学号 varchar(20) not null primary key ,
姓名 varchar(20)not null,
性别 char(10)default '男' check (性别 in ('男','女')),
联系方式 varchar(20),
总学分 char(10),
登录密码 varchar(20),
)
select*from 学生信息

create table 教师信息(
教师编号 varchar(20) not null primary key,
姓名 varchar(20)not null,
性别 char(10)default '男' check (性别 in ('男','女')),
联系方式 varchar(20),
年龄 char(10),
登录密码 varchar(20),
)
select*from 教师信息

create table 课程信息(
课程编号 varchar(20) not null primary key,
课程名称 varchar(20) not null,
学分 char(10) not null,
)
select*from 课程信息

create table 开课教室信息(
课室号 char(10) not null primary key,
建筑名称 varchar(20) not null,
课室容量 char(10),
)
select*from 开课教室信息

create table 课程时间信息(
课程时间信息编号 char(10) not null primary key,
开始时间 varchar(20),
结束时间 varchar(20),
)
select*from 课程时间信息

create table 开课信息(
开课编号 varchar(20) not null primary key,
学期 varchar(20) not null,
学年 varchar(20) not null,
课程编号 varchar(20) not null,
课程时间信息编号 char(10) not null,
课室号 char(10) not null,
foreign key (课程编号) references 课程信息(课程编号),
foreign key (课程时间信息编号) references 课程时间信息(课程时间信息编号),
foreign key (课室号) references 开课教室信息(课室号)
)
select*from 开课信息
drop table 开课信息;

create table 开课信息(
开课编号 varchar(20) not null,
学期 varchar(20) not null,
学年 varchar(20) not null,
课程编号 varchar(20) not null,
课程时间信息编号 char(10) not null,
课室号 char(10) not null,
primary key(开课编号,学期,学年,课程编号,课程时间信息编号,课室号),
foreign key (课程编号) references 课程信息(课程编号),
foreign key (课程时间信息编号) references 课程时间信息(课程时间信息编号),
foreign key (课室号) references 开课教室信息(课室号)
)
select*from 开课信息

create table 教师授课(
开课编号 varchar(20) not null,
教师编号 varchar(20) not null,
学期 varchar(20) not null,
学年 varchar(20) not null,
课程编号 varchar(20) not null,
课程时间信息编号 char(10) not null,
课室号 char(10) not null,
primary key(开课编号,教师编号,学期,学年,课程编号,课程时间信息编号,课室号),
foreign key (课程编号) references 课程信息(课程编号),
foreign key (课程时间信息编号) references 课程时间信息(课程时间信息编号),
foreign key (课室号) references 开课教室信息(课室号),
foreign key (教师编号) references 教师信息(教师编号)
)
ALTER TABLE 教师授课 ADD foreign key (开课编号,学期,学年) REFERENCES 开课信息(开课编号,学期,学年);

select*from 教师授课

其中,开课信息表属于弱实体集,通过联系集开设课程依赖于强实体集课程信息表。开课信息表的主码由开课编号、学期、学年以及 课程编号组成。
...全文
1561 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xst_HY 2016-04-12
  • 打赏
  • 举报
回复
好的!可以了!谢谢!!!
中国风 2016-04-12
  • 打赏
  • 举报
回复
ALTER TABLE 教师授课 ADD foreign key (开课编号,学期,学年) REFERENCES 开课信息(开课编号,学期,学年); 红色部份在3列在开课信息没用唯一性 如果表有唯一性建上就可引用了 ALTER TABLE 开课信息 ADD CONSTRAINT UQ_开课信息_1 UNIQUE(开课编号,学期,学年)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧