У меня есть четыре таблицы: отдел (идентификатор, имя), курс (идентификатор, имя), персонал (идентификатор, имя, dept_id) и staff_to_course (staff_id, course_id). Мне нужно показать, сколько человек из каждого отдела прошли (и не прошли) каждый курс, а также среднюю оценку для каждого отдела и для каждого курса:
| Course 1 | Course 2 | Average |
----------------------------------------
Dept 1 | 20% | 30% | 25% |
----------------------------------------
Dept 2 | 10% | 40% | 25% |
----------------------------------------
All | 18% | 33% | 25% |
----------------------------------------
Я могу выполнить запрос на соединение SQL, но я не уверен, как правильно использовать объекты для внутреннего представления данных.
В настоящее время у меня есть объекты Course и Department, но написание таких методов, как $course->percentComplete($dept_id)
, кажется неправильным, а $course->percentComplete('all')
- еще более неправильным. Среднее значение курса не является разумным свойством объекта экземпляра курса, но размещение его на объекте отдела означало бы дублирование кода между двумя классами, что, безусловно, неправильно.
Я ожидаю, что здесь есть какой-то базовый ОО-принцип, который я нарушаю, но не вижу, что это такое.