По ТЗ должно быть 4 сущности, есть школьники, есть классы, есть их оценки за год и предметы по которым они занимаются, в конечно итоге нужно представить список классов, при выборе одного школьного класса показывается таблица ученики/предметы и оценки по предметам за год, как в школьном журнале. Если я свяжу таблицы следующим образом, то будет ли это правильно: класс - школьники (один ко многим), классы - предметы (много ко многим), школьники - предметы (много ко многим), школьники - оценки (много ко многим), оценки - предметы (много ко многим)? Использую laravel.
hokudJolsbsy, ну с оценкой я сам не до конца понял, но от меня хотят чтобы это была именно отдельная таблица, на счет связей я не уверен, просто мне нужно будет вывести список классов, при клике на конкретный класс мне нужно будет вывести таблицу школьников из этого класса с их оценками по каждому предмету
lightsout93, А по этому ТЗ уже работал кто-нибудь? Или на Вас обкатывают. Может, и есть в этом смысл, но естественней представить журнал, как страница=предмет, а список - ученик-оценка. Чем страница=ученик со списком предметов-оценок. Но можно и так и как угодно.
Не понятно, какой смысл несёт выборка школьники-предметы, а школьники-оценки и оценки-предметы, это больше на сводки похоже, типа, посмотреть, какие оценки по такому предмету или у такого школьника.
А как вы делаете связь между школьником и его оценками по предметам?
В школьном журнале, если не ошибаюсь, хранятся оценки, полученные в течении года, а не годовые. Если так, то таблицу "Оценки" обязательно нужно дополнить датой. Впрочем, это касается и остальных таблиц, для которых будет достаточно года.
Ещё бы, в зависимости от необходимого "функционала", добавил таблицу связи "Предмет-Класс" (например, для составления расписания).
Всё остальное перекрывается имеющимися таблицами.
Ну, как бы сделал я -
students.sql
| id | first_name | last_name | birthday (unix) | class (string) | ну и по мелочи еще |
| 999 | Дмитрий | Грачев | 10.10.2001 | 9 A | ну и по мелочи еще |
--------------------------------
teachers.sql
--------------------------------
| id | first_name | last_name | birthday (unix) | ну и по мелочи
| 1024 | Татьяна | Еблова | 2131241412421 | ну да
--------------------------------
assessments.sql
| id | student_id | assessment | teacher_id | time
| 1 | 999 | 2 | 1024 | 13123123124
--------------------------------
Ну, может это как-то банально, ну не знаю, сойдет
>> классы - предметы (много ко многим), школьники - предметы (много ко многим)
Эти связи равнозначны в условиях отечественного образования, когда все ученики 1 класса изучают одни и те же предметы. Правильно "класс-предмет" и "школьник-класс".
Если про "ненашу" систему образования, когда ученики одного класса могут изучать разные предметы, то тогда нужны связи "класс-школьник" и "школьник-предмет".