Я бы предложил 3 таблицы, но не 3, которые вы определили.
Таблицы учеников и пользователей просто дублируют друг друга, так что эти две могут стать 1 таблицей.
Таблица cousresотлично, как есть.
Третья таблица - это таблица, используемая для сопоставления / привязки / привязки студента к курсу и позволяющая устанавливать отношения типа «многие-многие». То есть у студента может быть много курсов, и у каждого курса может быть много студентов.
Таким образом, таблицы могут быть: -
table_users (идентификатор, имя, другие столбцы, если необходимо) table_courses (код,title) (если код уникален)* Первый запрос, список в соответствии с (ODRER BY) для именования связанных строк (таблица сопоставления используется только для того, чтобы значения не отображались, поскольку они будут бесполезны для конечного пользователя)
![enter image description here](https://i.stack.imgur.com/jfIbu.png)
Во втором запросе используются некоторые агрегатные функции, которые объединяют значения в зависимости от того, как сгруппированы выбранные строки (GROUP BY) (разбитые на подмножества). Группировка ведется по курсу. Функция count возвращает количество строк в наборе, функции group_concat возвращает разделенный запятыми список всех значений указанного выражения (обычно столбца) в наборе.
![enter image description here](https://i.stack.imgur.com/x8WQr.png)