Я разрабатываю небольшую базу данных школы, используя MySQL.
У меня есть таблица для профессоров, с идентификатором, именем и адресом электронной почты, и таблица для лекций, с идентификатором, названием лекции и изданием этого класса. Затем у меня есть промежуточная таблица для профессоров и лекций.
Как вы можете видеть ниже, в моей последней таблице есть столбец для оценки. Где за каждую лекцию профессор получает оценку.
CREATE TABLE professor (
professor_id INT PRIMARY KEY,
professor_name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL UNIQUE);
CREATE TABLE lecture (
lecture_id INT PRIMARY KEY,
lecture_name VARCHAR(50) NOT NULL,
edition INT NOT NULL);
CREATE TABLE lecture_prof (
professor_id INT,
lecture_id INT,
Evaluation INT,
FOREIGN KEY (professor_id) REFERENCES professor (professor_id),
FOREIGN KEY (lecture_id) REFERENCES lecture (lecture_id));
Теперь я хочу получить средние оценки по всем классам, которые преподают профессора. И я создал таблицу с выбором.
CREATE TABLE Avg_Evaluation AS SELECT
p.professor_id,p.professor_name, AVG(Evaluation) AS Avg_Eval
FROM professor p, lecture_professor lp
WHERE p.professor_id=lp.professor_id
GROUP BY professor_id, professor_name;
Таблица работает, но у нее есть проблема, единственные значения, которые она показывает, - это значения, которые уже находятся в родительской таблице (lecture_profоресурс) до создания таблицы Avg_evaluation. И если я хочу добавить новых профессоров и новые издания, таблица не обновляется автоматически.
Как я могу решить это? Я также думал, что мог бы сделать обновляемое представление, но я не могу использовать арифметические функции, такие как AVG.
Я хотел сделать триггер, потому что после вставки каких-либо новых значений в таблицу lecture_proferor. но я не знаю как.
Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ: вот некоторые фиктивные значения. и исправления.
INSERT INTO faculty
VALUES
(1,'Ana ','as@email.com'),
(2,'Peter','pt@email.com'),
(3,'Mitchel','mm@email.org');
INSERT INTO lecture VALUES (1, 'Econ', 20),(2, 'History', 1),(3, 'Social Studies', 2);
INSERT INTO lecture_professor VALUES (1,1,3),(2,1,2),(2,2,4),(2,3,4),(1,3,2),(3,1,3);