Ну, в принципе, выглядит нормально. Пара вопросов и замечаний только возникает:
- В чём разница между "занятием" и "парой"? Можно ли их в 1 таблицу объединить?
- Почему группа, аудитория, Вид занятия не в таблице занятие?
- Зачем отдельная таблица для дней недели? Можно же хранить тип дня недели (0-6).
- Зачем отдельная таблица для номера недели? Его тоже можно в расписании хранить.
- Лучше изменить названия таблиц на множественные числа Преподаватель -> Преподаватели, Пара -> Пары и т.д.
- Что значит вывод расписания? В консоль? Или вы используете доп. язык для вызова запроса и получения результатов (php, например)?
Вывод расписания будет каким-то таким для ваших таблиц:
SELECT * FROM Расписание
JOIN Преподаватель ON Преподаватель.id = Расписание.id_преподавателя
JOIN Номер_недели ON Номер_недели.id = Расписание.id_Номера
JOIN День_недели ON День_недели.id = Расписание.id_Дня
LEFT JOIN Пара ON Пара.id = Расписание.id_пары
LEFT JOIN Занятие ON Занятие.id = Расписание.id_Занятия
WHERE Имя LIKE '%петя%'
После SELECT
я поставил *, чтобы выводить все колонки, вместо неё можете указать нужные вам столбцы. Если учтёте ситуацию в пунктах 3 и 4, то запрос упроститься и не надо будет JOIN
-ить ещё 2 таблицы.
Обратите внимание, что при отсутствии данных в таблицах Пара
, Занятие
столбцы, выбранные из этих таблиц будут со значением null
. Это произойдет из-за LEFT JOIN
.