То, что вы можете упростить, - это ассоциативная таблица пользователей, классов и оценок (я нарисовал для вас диаграмму https://dbdiagram.io/d/5e9787f039d18f5553fdabb1). С помощью этой таблицы вы можете запрашивать практически все, что вы когда-либо хотели.
Теперь все, что вам нужно сделать, это настроить привилегии на основе роли пользователя. Мастер может читать и писать всем class_user_score
сущностям, где, если есть запись о его нахождении в классе, он может читать и CRUD все class_user_score
сущностей с одинаковыми classId
. Студент может читать только class_user_score
сущностей с его userId
в них.
К сожалению, я не могу помочь вам с реализацией Laravel (они также называют ассоциативную таблицу сводной таблицей для некоторого странного причина), так как я больше отношусь к типу React, тип Nodejs, но я надеюсь, что это, по крайней мере, поможет вам разобраться в проблеме.