Логика приложения

260
26 ноября 2016, 20:21

Имеются сущности: Преподаватели, студенты, курсы.

Преподаватели могут: создавать курсы, смотреть кто из студентов на курсы записан, подтверждать что студент курс прошел.

Студенты могут: записываться на различные курсы, смотреть на какие курсы уже записан, смотреть какие курсы уже прошел.

Курсы: имеют поле преподавателя, создавшего курс

Каким образом для этого реализовать курсы? Создавать массив студентов для каждого курса? мне кажется будет проблема с доступом конкретного студента к информации о курсах на которые записан.

Для каждого студента создавать новый обьект курс, и к нему добавлять имя студента?

Как запретить студенту несколько раз покупать один и тот же курс?

Answer 1

Для решения этой задачи напрашивается использование реляционной бд, к примеру MySQL. Подходящей схемой может оказаться следующая:

таблица students

таблица courses, у каждого курса есть связь с teachers

таблица teachers

таблица course_students, реализующая связь "многие ко многим"

UPD: Опишу подробнее.

Таблицы students, teachers, cources должны иметь поле id (int, primary key), остальное по необходимости. Таблица courses дополнительно имеет поле teacher_id (int, foreign key в таблицу teachers по желанию).

Для реализации n*m связи в таблице course_students требуются всего два поля: course_id, student_id, оба типа int.

Сама информация по конкретным курсам и студентам хранится в таблицах courses и students.

READ ALSO
Возвращение значения двух селектов в node js

Возвращение значения двух селектов в node js

Доброго времени сутокРаботаю с node js

311
MySql автоинкремент не учитывает удаленные id элементы

MySql автоинкремент не учитывает удаленные id элементы

У меня есть таблица a с varhar массивом на id в b таблицеК примеру (1,2,3,4,5,6)

313
Получить записи за последний месяц

Получить записи за последний месяц

Нужно получить id клиента, количество и сумму заказов за последний месяц

269
mysql поиск дубликатов

mysql поиск дубликатов

Подскажите, как в MySQL можно организовать поиск дубликатов в поле? Вывести только неповторяющиеся значения можно с помощью DISTINCT, а вот как...

257