Дизайн базы данных для многих со многими связями с необязательными столбцами? - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть связь с базой данных с двумя таблицами, курсами и модулями. Курс может иметь много модулей, и модуль может принадлежать многим курсам. Администратор может добавлять модули в курс. Но теперь у нас есть проблема, хотя у вас может быть:

- Course 1
     module 1 | 3 credits
     module 2 | 4 credits

Может быть ситуация, когда модули могут быть необязательными, но студент должен сделать один из них:

- Course 1
   module 3 | 2 credits OR module 4 | 2 credits

Таким образом, вы увидите, что в первом сценарии студент должен выбрать оба этих модуля, чтобы получить баллы за курс, но во втором сценарии студент может выбрать модуль 3 или модуль 4, чтобы заработать 2 кредита.

Так что моя проблема в том, что я понятия не имею, как сформировать отношения между курсами и модулями сейчас, когда некоторые модули могут быть необязательными, но один по крайней мере требуется.

1 Ответ

0 голосов
/ 07 сентября 2018

Вам понадобится промежуточная таблица для реализации отношения many to many. В этой промежуточной таблице вы можете добавить столбец, чтобы указать, является ли курс optional.

Но, в конце концов, в вашем приложении вам нужно убедиться, что студент выберет хотя бы один модуль, если он обязателен.

Вы могли бы иметь что-то вроде:

courses: id, name

modules: id, name

course_module: id, course_id, module_id, optional

Ваша модель будет выглядеть так:

class Course extends Model
{
    public function modules()
    {
        return $this->belongsToMany(Module::class)->withPivot();
    }
}

И вы бы проверили, является ли модуль обязательным, проверив

$course->modules->first()->pivot->optional;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...