class(班号,专业号,系号,入学年份,人数)
学生(学号,姓名,年龄,班号)
系(系号,系名)
用SQL语言完成 S--学生
D--系
C--班 问题 学生(S)和班级(C)怎么参照啊 字段不能添加的情况下怎么做
复合主键的字段不能单个参照 Create table D
(Dno char(9) primary key,
Dname char(20),
);
create table S
(
Sno CHAR(9) primary key,
Sname CHAR(20) not null,
Sage int,
check ([Sage]>=15 and [Sage]<=40),
Cno int ,
CONSTRAINT F_K_S FOREIGN KEY(Cno)REFERENCES C(Cno) --这句错误,不能参照复合主键
);Create table C
(Cno int ,
Sbjuct char(20),
Dno CHAR(9),
Ctime Datetime,
sumpeople int,
check ([sumpeople]<=30),
PRIMARY KEY(Cno,Dno,Sbjuct)
);
学生(学号,姓名,年龄,班号)
系(系号,系名)
用SQL语言完成 S--学生
D--系
C--班 问题 学生(S)和班级(C)怎么参照啊 字段不能添加的情况下怎么做
复合主键的字段不能单个参照 Create table D
(Dno char(9) primary key,
Dname char(20),
);
create table S
(
Sno CHAR(9) primary key,
Sname CHAR(20) not null,
Sage int,
check ([Sage]>=15 and [Sage]<=40),
Cno int ,
CONSTRAINT F_K_S FOREIGN KEY(Cno)REFERENCES C(Cno) --这句错误,不能参照复合主键
);Create table C
(Cno int ,
Sbjuct char(20),
Dno CHAR(9),
Ctime Datetime,
sumpeople int,
check ([sumpeople]<=30),
PRIMARY KEY(Cno,Dno,Sbjuct)
);
所以要么不要复合主键,只把Cno 设为主键
要么就设置Cno 唯一
这是正确答案Create table D
(Dno char(9) primary key,
Dname char(20)
);Create table C
(Cno int PRIMARY KEY,
Sbjuct char(20),
Dno CHAR(9),
Ctime Datetime,
sumpeople int,
check ([sumpeople]<=30),
FOREIGN KEY(Dno)REFERENCES D(Dno),
);Create table S
(Sno CHAR(9) primary key ,
Sname CHAR(20) not null,
Sage int,
check ([Sage]>=15 and [Sage]<=40),
Cno int,
FOREIGN KEY(Cno)REFERENCES C(Cno)
);