Create database cat
go
use cat
go
CREATE TABLE s(s# int not null primary key,s_name varchar(8) not null)
go
CREATE TABLE c (c# int not null primary key,c_name varchar(8) not null)
go
CREATE TABLE cs(c# int not null,s# int not null,cj tinyint not null default(0),
primary key (c#,s#),foreign key(s#) references s(s#),foreign key(c#) references c(c#))
goinsert s values(1,'saa')
insert c values(1,'caa')--这句是对的
insert cs values(1,1,86)--这句是错的,sql会报错,应为s表的s#列里没有2
insert cs vlaues(2,1,45)

解决方案 »

  1.   

    关联两个表,可以实现数据的完整性,有效地控制数据的逻辑规则。
      

  2.   

    班级表中有
    一班 001
    二班 002
    学生表中有
    学生号
    班级号
    。。
    如果学生表中出现了这样的记录
    学生号 班级号
    0001   003
    这样就在班级表中查不到学生所在班级的信息,也就是参照关系不完整,因此
    学生表中的班级好必须等于班级表中的某一个班级好的直。这样才能保证班级学生参照完整性
    用关系就是在用户试图插入一个003的班级好在学生表里的时候抱错提示不允许这样做。
      

  3.   

    谢谢大虾们回答我的问题 那么我还想问如果我有一个表
    学生学号
    学生姓名
    学生爱好因为学生爱好是多值的 那么如果一个学生学号001 他爱好:篮球 足球
    那么我是否要建立两个表
    学生学号 (主键)      学生学号
    学生姓名               学生爱好使两个表以学生学号联系起来 制造这种关系啊 这样才可以达到一个学生有多个爱好的目的