Используя такие понятия, как «наследование таблиц» (свободно) и таблицы объединения, я бы настроил это следующим образом:
Person
person_id, first_name, last_name, address
Student
student_id, person_id, matr_nr
Teacher
teacher_id, person_id, salary
Lecture
lecture_id, teacher_id, lect_name, lect_description, date
Attendees
lecture_id, student_id
Где таблицы «Ученик» и «Учитель» «наследуют» от таблицы Person и Attendees.Таблица соединения между Lecture и Student (учитель_id используется в таблице Lecture для указания того, кто преподает класс. И согласно рекомендациям таблицы Join таблица должна фактически называться Lecture_Student или аналогичной)
Альтернативный дизайн: (допускается для нескольких учителей в классе)
Person
person_id, first_name, last_name, address
Student
student_id, person_id, matr_nr
Teacher
teacher_id, person_id, salary
Lecture
lecture_id, lect_name, lect_description, date
Lecture_Student
lecture_id, student_id
Lecture_Teacher
lecture_id, teacher_id