初学数据库 遇到小疑点 要交作业了 帮忙!

初学数据库 遇到小问题 要交作业了 帮忙!!!drop table scoredrop table studentsdrop table lessonsdro

初学数据库 遇到小问题 要交作业了 帮忙!!!
drop table score;
drop table students;
drop table lessons;
drop table classes;
drop table course;
drop table teacher;

create table teacher
(
 教师编号varchar(6)NOT NULL,
 姓名varchar(8)NOT NULL,
 性别varchar(4),
 授课课程varchar(16),
 工作年龄number(3),
 出生日期date,
 民族varchar(12),
 工资number(6),
 constraint pk_teacher primary key (教师编号),
 constraint teacher_sex check (性别='M' or 性别='F')
);

create table course
(
 课程名称varchar(20)NOT NULL,
 课程编号varchar(15)NOT NULL,
 学分number(2,1),
 教师编号varchar(5),
 先修课程编号varchar(5),
 constraint pk_course primary key (课程编号)
);

create table classes
(
 班级编号number(20)NOT NULL,
 班级名称varchar(20)NOT NULl,
 所属学院varchar(20),
 人数number(2),
 constraint pK_class primary key (班级编号)
);

create table lessons
(
 课程编号varchar(5)NOT NULL,
 教师编号varchar(5)NOT NULL,
 课程名称varchar(16)NOT NULL,
 班级编号number(20)NOT NULL,
 学院名称varchar(20),
 学分number(2,1),
 入学年份date,
 开设课程专业varchar(16),
 constraint pk_lesson primary key (课程编号,教师编号,班级编号),
 constraint to_teacher foreign key (教师编号) references teacher (教师编号),
 constraint to_course foreign key (课程编号) references course (课程编号),
 constraint to_class foreign key (班级编号) references classes (班级编号)
);

create table students
(
 学号varchar(12)NOT NULL,
 姓名varchar(10)NOT NULL,
 性别varchar(4),
 班级编号number(20),
 出生日期 date,
 学院名称varchar(20),
 constraint pk_students primary key (学号),
 constraint to_classes foreign key (班级编号) references classes (班级编号),
 constraint chk_students_sex check (性别='M' or 性别='F')
);

create table score
(
 学号varchar(12)NOT NULL,
 姓名varchar(10),
 性别varchar(4),
 成绩number(4,1),
 学院varchar(20),
 课程编号varchar(5),
 constraint pk_score primary key (学号),
 constraint to_student foreign key (学号) references students (学号),
 constraint to_couses foreign key (课程编号) references course (课程编号),
 constraint chk_score_sex check (性别='M' or 性别='F')
);

insert into teacher
values('00000','刘云冰','M','高等数学',25,'27-6月-66','汉',5600);
insert into teacher
values('00002','李顺新','M','C++程序设计',21,'5-4月-69','汉',3600);
insert into teacher
values('00003','汪亚玲','F','数据库软件实践',21,'6-3月-73','汉',7200);

insert into classes
values(3011002,'软件工程2班','计算机科学与技术',36);
insert into classes
values(3011001,'软件工程1班','计算机科学与技术',35);
insert into classes
values(3011003,'软件工程3班','计算机科学与技术',37);

insert into course
values('高等数学','00000',3.5,'20100','20140');
insert into course
values('程序设计基础','00001',2,'20101','20141');
insert into course
values('数据库软件实践','00003',2,'20102','20142');

insert into lessons
values('00000','20140','高等数学',3011002,'计算机科学与技术',3.5,'1-9月-2010','软件工程系');
insert into lessons
values('00001','20141','程序设计基础',3011002,'计算机科学与技术',2,'1-9月-2010','软件工程系');

insert into students
values('201013138061','欧阳实普','M',3011002,'1-9月-2010','计算机科学与技术');
insert into students
values('201013138062','陈知行','M',3011002,'1-9月-2010','计算机科学与技术');
insert into students
values('201013138063','刘少华','M',3011002,'1-9月-2010','计算机科学与技术');

insert into score
 values('201013138063','刘少华','M',555,'计算机科学与技术',00000);
insert into score
 values('201013138061','欧阳实普','M',598,'计算机科学与技术',00000);

错误:
第 1 行出现错误:
ORA-02291: 违反完整约束条件 (RJ201013138063.TO_COUSES) - 未找到父项关键字




SQL> insert into score
  2 values('201013138061','欧阳实普','M',598,'计算机科学与技术',00000)
insert into score
*
第 1 行出现错误:
ORA-02291: 违反完整约束条件 (RJ201013138063.TO_COUSES) - 未找到父项关键字

SQL> insert into lessons
  2 values('00000','20140','高等数学',3011002,'计算机科学与技术',3.5,'1-9月-2010','软件工程系');
insert into lessons
*
第 1 行出现错误:
ORA-02291: 违反完整约束条件 (RJ201013138063.TO_TEACHER) - 未找到父项关键字


SQL> insert into lessons
  2 values('00001','20141','程序设计基础',3011002,'计算机科学与技术',2,'1-9月-2010','软件工程系');

insert into lessons
*
第 1 行出现错误:
ORA-02291: 违反完整约束条件 (RJ201013138063.TO_TEACHER) - 未找到父项关键字

求解释 详细 最好是你已经解决了 因为要到机房才能用数据库
谢谢了 到机房的机会很少很少 因为我本来在一个很小气的学校!!!

[解决办法]
你最好都执行两次应该就可以了。 你这个是有主外键关联。
鉴于你现在可能不是懂主外键关联。
你就多执行几次

SQL code
insert into teachervalues('00000','刘云冰','M','高等数学',25,'27-6月-66','汉',5600);insert into teachervalues('00002','李顺新','M','C++程序设计',21,'5-4月-69','汉',3600);insert into teachervalues('00003','汪亚玲','F','数据库软件实践',21,'6-3月-73','汉',7200);insert into classesvalues(3011002,'软件工程2班','计算机科学与技术',36);insert into classesvalues(3011001,'软件工程1班','计算机科学与技术',35);insert into classesvalues(3011003,'软件工程3班','计算机科学与技术',37);insert into coursevalues('高等数学','00000',3.5,'20100','20140');insert into coursevalues('程序设计基础','00001',2,'20101','20141');insert into coursevalues('数据库软件实践','00003',2,'20102','20142');insert into lessonsvalues('00000','20140','高等数学',3011002,'计算机科学与技术',3.5,'1-9月-2010','软件工程系');insert into lessonsvalues('00001','20141','程序设计基础',3011002,'计算机科学与技术',2,'1-9月-2010','软件工程系');insert into studentsvalues('201013138061','欧阳实普','M',3011002,'1-9月-2010','计算机科学与技术');insert into studentsvalues('201013138062','陈知行','M',3011002,'1-9月-2010','计算机科学与技术');insert into studentsvalues('201013138063','刘少华','M',3011002,'1-9月-2010','计算机科学与技术');
[解决办法]
未找到父项关键字是因为你定义了外键
以insert into score 为例子 
你在score表中定义了两个外键 
constraint to_student foreign key (学号) references students (学号),
 constraint to_couses foreign key (课程编号) references course (课程编号),
所以 往score表中插入数据时,必须保证学号在学生表中有记录 课程号在课程表中有记录
否则就会报违反完整性约束的错误

还有 你的建表语句太混乱 看不懂
[解决办法]
探讨
你最好都执行两次应该就可以了。 你这个是有主外键关联。
鉴于你现在可能不是懂主外键关联。
你就多执行几次

SQL code

insert into teacher
values('00000','刘云冰','M','高等数学',25,'27-6月-66','汉',5600);
insert into teacher
values('00002','李顺新','M','C……

[解决办法]
SQL code
create table teacher( 教师编号    varchar(6)    NOT NULL, 姓名     varchar(8)    NOT NULL, 性别     varchar(4), 授课课程    varchar(16), 工作年龄    number(3), 出生日期    date, 民族     varchar(12), 工资     number(6), constraint pk_teacher primary key (教师编号), constraint teacher_sex check (性别='M' or 性别='F'));create table course( 课程名称    varchar(20)    NOT NULL, 课程编号    varchar(15)    NOT NULL, 学分     number(2,1), 教师编号    varchar(5), 先修课程编号    varchar(5), constraint pk_course primary key (课程编号));create table classes( 班级编号    number(20)    NOT NULL, 班级名称    varchar(20)    NOT NULl, 所属学院    varchar(20), 人数     number(2), constraint pK_class primary key (班级编号));create table lessons( 课程编号    varchar(5)    NOT NULL, 教师编号    varchar(5)    NOT NULL, 课程名称    varchar(16)    NOT NULL, 班级编号    number(20)    NOT NULL, 学院名称    varchar(20), 学分     number(2,1), 入学年份    date, 开设课程专业    varchar(16), constraint pk_lesson primary key (课程编号,教师编号,班级编号), constraint to_teacher foreign key (教师编号) references teacher (教师编号), constraint to_course foreign key (课程编号) references course (课程编号), constraint to_class foreign key (班级编号) references classes (班级编号));create table students( 学号     varchar(12)    NOT NULL, 姓名     varchar(10)    NOT NULL, 性别     varchar(4), 班级编号    number(20), 出生日期 date, 学院名称    varchar(20), constraint pk_students primary key (学号), constraint to_classes foreign key (班级编号) references classes (班级编号), constraint chk_students_sex check (性别='M' or 性别='F'));create table score( 学号     varchar(12)    NOT NULL, 姓名     varchar(10), 性别     varchar(4), 成绩     number(4,1), 学院     varchar(20), 课程编号    varchar(5), constraint pk_score primary key (学号), constraint to_student foreign key (学号) references students (学号), constraint to_couses foreign key (课程编号) references course (课程编号), constraint chk_score_sex check (性别='M' or 性别='F'));insert into teachervalues('00000','刘云冰','M','高等数学',25,'27-6月-66','汉',5600);insert into teachervalues('00002','李顺新','M','C++程序设计',21,'5-4月-69','汉',3600);insert into teachervalues('00003','汪亚玲','F','数据库软件实践',21,'6-3月-73','汉',7200);insert into classesvalues(3011002,'软件工程2班','计算机科学与技术',36);insert into classesvalues(3011001,'软件工程1班','计算机科学与技术',35);insert into classesvalues(3011003,'软件工程3班','计算机科学与技术',37);insert into coursevalues('高等数学','00000',3.5,'20100','20140');insert into coursevalues('程序设计基础','00001',2,'20101','20141');insert into coursevalues('数据库软件实践','00003',2,'20102','20142');----出错语句:向lessons表中添加数据时--错误提示:ORA-02291: integrity constraint (YEEXUN.TO_TEACHER) violated - parent key not found--这里指向约束TO_TEACHER,说明此约束没有在他参照的父表中找到相应的记录insert into lessonsvalues('00000','20140','高等数学',3011002,'计算机科学与技术',3.5,'1-9月-2010','软件工程系');--20140这个教师编号是参照teacher表的,你的teacher表里面没有此编号的教师所以出错了 


[解决办法]
其实看起来还是数据插入顺序的问题没搞清楚,直接给你贴正确的代码你也可能不知道为什么要那么做。总之对于主键外键,一个必然的原则就是如果你想在表A的X列上创建关联到B表Y列的外键,那么Y列就是父键,没有父,哪有子,所以你需要先把对应的数据在B表中插入,然后再去A表中插入。