Вы должны иметь ссылки после каждого внешнего ключа.Вам не хватает этого в начале настройки курсов.Вот документация
Я думаю, это больше того, что вы хотите.Ваш порядок создания был неверным.У вас были внешние ключи в неправильном месте из-за этого.Вы только настраиваете сопоставления внешнего ключа на таблицах с отношениями к PK.Вам нужно только настроить PK на других ваших столах.Пока вы создаете таблицы в правильном порядке, вы можете делать это, как показано ниже.
Итак, teachers
и departments
имеют первичные ключи, которые являются внешними ключами в таблице courses
.teachers
и departments
не нужно беспокоиться о внешнем ключе.Вы оставляете это до таблицы, которая на самом деле имеет ссылку (courses
)
DROP TABLE IF EXISTS teachers;
CREATE TABLE teachers(
teachers_teacherName VARCHAR(20) NOT NULL,
teachers_teacherHomeroom SMALLINT(3) NOT NULL,
teachers_teacherHomeroomGrade SMALLINT(1) NOT NULL,
teachers_teacherFullTime BOOL NOT NULL,
PRIMARY KEY (teachers_teacherName)
--FOREIGN KEY (teachers_teacherName) REFERENCES courses (courses_courseTeacher)
--This is not where you set up the FK for courses
);
DROP TABLE IF EXISTS departments;
CREATE TABLE departments(
departments_departmentAbbv CHAR(4) NOT NULL,
departments_departmentFullName VARCHAR(15) NOT NULL,
PRIMARY KEY (departments_departmentAbbv)
--FOREIGN KEY (departments_departmentAbbv) REFERENCES courses (courses_courseDepartmentAbbv)
--This is not where you set up the FK for courses
);
CREATE TABLE courses(
courses_courseNumber INT NOT NULL AUTO_INCREMENT,
courses_courseTitle VARCHAR(25) NOT NULL,
courses_courseTeacher VARCHAR(30) NOT NULL,
courses_courseCostOfBooks DECIMAL(5,2) NOT NULL,
courses_courseDepartmentAbbv CHAR(4) NOT NULL,
PRIMARY KEY (courses_courseNumber),
FOREIGN KEY (courses_courseTeacher)
REFERENCES teachers (teachers_teacherName)
FOREIGN KEY (courses_courseDepartmentAbbv)
REFERENCES departments(departments_departmentAbbv)
);