create table Department
(  Dname varchar(7)  not null   ,
  Dnumber char(2)   primary key not null ,
  Dleader varchar(3)   not null,
  Dleaderc  varchar(11)   unique
)
create  table Student
(  Sname   varchar(3)  not null , 
  Snumber  varchar(7)  primary key  not null,
  Ssex     char(1)    check(Ssex='b' or Ssex='g'),
  Sdob  datetime  check(Sdob>='1900' and Sdob<='2100'),
  Sadress    char(4)   not null,
  Smobile  varchar(11)  not null ,
  Sdepartment  varchar(7) not null,
  foreign key (Sdepartment)  references  Department(Dname)
)
create table  Course
(  Cname    varchar(5)  not null ,
  Cnumber  varchar(2)  primary key not null ,
  Cst       int    ,
  Cgrade   smallint  not null ,
  Cteacher  varchar(3)  not null 
)
create table Studentc
( Sname  varchar(3)  not null ,
  Snumber  varchar(7)  primary key  not null ,
  Cname    varchar(5)  not null unique,
  Cgrade  int    check(Cgrade>=’100’ and Cgrade<=’00’) ,  
  foreign key (Sname) references  Student(Sname) ,
   foreign key (Cname)  references  Course(Cname)
)
我建表Student[出现下面的错误提示
color=#FF0000]SQL提示如下:
消息 1776,级别 16,状态 0,第 1 行
在被引用表 'Department' 中没有与外键 'FK__Student__Sdepart__49C3F6B7' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息

解决方案 »

  1.   


    create table Department
    ( Dname varchar(7) not null ,
      Dnumber char(2) primary key not null ,
      Dleader varchar(3) not null,
      Dleaderc varchar(11) unique
    )
    create table Student
    ( Sname varchar(3) not null ,  
      Snumber varchar(7) primary key not null,
      Ssex char(1) check(Ssex='b' or Ssex='g'),
      Sdob datetime check(Sdob>='1900' and Sdob<='2100'),
      Sadress char(4) not null,
      Smobile varchar(11) not null ,
      Sdepartment varchar(7) not null,
      foreign key (Sdepartment) references Department(Dname)--把Dname改成Dnumber 就应该可以了。
    )
    create table Course
    ( Cname varchar(5) not null ,
      Cnumber varchar(2) primary key not null ,
      Cst int ,
      Cgrade smallint not null ,
      Cteacher varchar(3) not null  
    )
    create table Studentc
    ( Sname varchar(3) not null ,
      Snumber varchar(7) primary key not null ,
      Cname varchar(5) not null unique,
      Cgrade int check(Cgrade>=’100’ and Cgrade<=’00’) ,   
      foreign key (Sname) references Student(Sname) ,
      foreign key (Cname) references Course(Cname)
    )
      

  2.   

    本帖最后由 htl258 于 2011-05-16 00:10:35 编辑
      

  3.   

    create table Department
    ( Dname varchar(7) not null UNIQUE,
      Dnumber char(2) primary key not null ,
      Dleader varchar(3) not null,
      Dleaderc varchar(11) unique
    )
    create table Student
    ( Sname varchar(3) not null unique,  
      Snumber varchar(7) primary key not null,
      Ssex char(1) check(Ssex='b' or Ssex='g'),
      Sdob datetime check(Sdob>='1900' and Sdob<='2100'),
      Sadress char(4) not null,
      Smobile varchar(11) not null ,
      Sdepartment varchar(7) not null foreign key  references Department(Dname)
    )
    create table Course
    ( Cname varchar(5) not null unique,
      Cnumber varchar(2) primary key not null ,
      Cst int ,
      Cgrade smallint not null ,
      Cteacher varchar(3) not null  
    )
    create table Studentc
    ( Sname varchar(3) not null unique,
      Snumber varchar(7) primary key not null ,
      Cname varchar(5) not null unique,
      Cgrade int check(Cgrade>='100' and Cgrade<='00')  
      foreign key (Sname) references Student(Sname) ,
      foreign key (Cname) references Course(Cname)
    )