Желаемая функциональность:
- Учащиеся сообщают о недоступности для каждого учебного дня.
- Учителю предоставляется графический обзор недели, показывающий доступность каждого учащегося для каждых 75 миллионов временных интервалов.
- li>
Учитель составляет соответствующее расписание (нажимает на доступные временные интервалы и назначает их ученикам) - Его расписание хранится в базе данных.
- (В будущем я хотел бы иметь автоматическое расписание инструментов.)
- В течение учебного года каждая неделя одинакова. Учитель по сути просто составляет расписание на 1 неделю.
- Хотя продолжительность урока фиксирована (75 минут), уроки могут начаться в любую минуту дня.
На данный момент выполнено:
При использовании поддельных/введенных вручную данных графический обзор и отображение доступных временных интервалов работают.
Но после прочтения здесь о том, что никогда не следует хранить данные массива в таблице MySQL , я сомневаюсь, как правильно хранить данные, как настроить структуру своей базы данных. Думаю, мне нужно следовать ответу Злого Волка, но я не уверен в своей ситуации.
Текущая структура базы данных предположений:
- Таблица «Студенты» с идентификатором, контактными данными, предпочтениями и т. д.
- Таблица для каждого студента, содержащая данные о недоступности студента.
- Таблица для каждого учебного дня, содержащая все временные интервалы, заблокированные из-за недоступности ученика или запланированного урока.
Код: Выделить всё
Table "Students"
+----------+------+-------+-----
student_id | name | email | ...
+----------+------+-------+-----
331 | John | ... | ...
145 | Pete | ... | ...
Код: Выделить всё
Table "Student_John"
+-------+------------------+------------
schoolday | time_unavailable | student_id
+-------+------------------+------------
2 | 13:00-14:00 | 331 // on Monday, John is unavailable from 13:00-14:00
2 | 16:10-17:00 | 331 // on Monday, John is also unavailable from 16:10-17:00
3 | 08:00-13:00 | 331 // on Tuesday, John is unavailable from 08:00-13:00
Код: Выделить всё
Table "Student_Pete"
...
Код: Выделить всё
Table "Schoolday_Monday"
+---------+-------------+----------------+------------+--------
record_ID | time | status | student_id | schoolday
+-------+---------------+----------------+------------+--------
001 | 13:00-14:00 | unavailability | 331 | 2
002 | 16:10-17:00 | unavailability | 331 | 2
003 | 16:10-17:25 | lesson_booked | 145 | 2 // Teacher scheduled a lesson with Peter on Monday 16:10-17:25
Код: Выделить всё
Table "Schoolday_Tuesday"
...
Спасибо за совет!
Подробнее здесь: https://stackoverflow.com/questions/787 ... rate-table