Ваш первичный ключ в GRADE охватывает два столбца: stu_id
и course_id
.Вы не можете использовать course_id
в качестве ссылки из таблицы COURSE, поскольку она может ссылаться на несколько строк.
Ваш внешний ключ должен находиться в таблице GRADE
:
CREATE TABLE GRADE(
stu_id NUMBER(9) NOT NULL,
course_id VARCHAR2(7),
stu_crse_grade VARCHAR2(1),
PRIMARY KEY (stu_id, course_id),
FOREIGN KEY (stu_id) REFERENCES students(stu_id),
FOREIGN KEY (course_id) REFERENCES course(course_id),
CHECK (stu_crse_grade = 'A'
AND stu_crse_grade = 'B'
AND stu_crse_grade = 'C'
AND stu_crse_grade = 'D'
AND stu_crse_grade = 'F')
);
Кроме того, для вашей таблицы COURSE
ваш первичный ключ должен быть NOT NULL и должен охватывать только поле course_id
.Если бы вы могли иметь несколько course_id для разных преподавателей, как GRADE.course_id
определит, на каком курсе я учусь, если я не предоставлю instructor_id
?
CREATE TABLE COURSE(
course_id VARCHAR2(7) NOT NULL,
course_title VARCHAR2(20),
instructor_id NUMBER(3),
PRIMARY KEY (course_id)
);