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)
);

解决方案 »

  1.   

    被外键引用的字段必须是单独的主键或具有唯一约束
    所以要么不要复合主键,只把Cno 设为主键
    要么就设置Cno 唯一
      

  2.   

    朋友跟我说错了,导致
    这是正确答案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)
    );