Я хочу хранить информацию о курсах колледжа в базе данных (MySql), но я не уверен, как поддерживать связь между модулями и выборками.
По сути, курс может иметь обязательный раздел, группу необязательных модулей, раздел опций, и в каждом из них могут быть варианты выбора, которые содержат И или ИЛИ между модулями.
Простой пример.
Курс на 60 кредитов включает несколько обязательных модулей, которые составляют 40 кредитов. Остается выбрать 20 кредитов из группы дополнительных модулей. (Сами модули могут содержать разное количество кредитов). Эффективно; ('Mandatory module 1' AND 'Mandatory module 2'... AND'Mandatory module N') AND (40 credits from 'optional modules')
,
И и ИЛИ:
Когда я говорю о модулях выше, это может быть один модуль или «Модуль x ИЛИ Модуль Y», то есть в обязательном разделе. (эти модули, очевидно, должны иметь одинаковый кредитный вес). Или в необязательном разделе могут быть отдельные модули, или даже один из вариантов может быть чем-то вроде "module x AND module y"
.
Варианты.
Учащимся, возможно, придется пройти обязательные модули плюс один из n вариантов, которые могут содержать или не содержать И, ИЛИ, а также обязательные и необязательные разделы; т. е. «Вариант» имеет все атрибуты общего выбора модулей курса. Раздел «Параметры» будет объединяться по И или ИЛИ с другими разделами, такими как обязательные или необязательные; то есть обязательные модули «плюс один из следующих вариантов». По сути, раздел опций - это просто 'Option 1' OR 'Option 2'... OR 'Option N'
.
Проблема заключается в том, как сохранить все отношения И и ИЛИ, когда операнд может быть другой операцией И/ИЛИ или одним модулем, и отслеживать количество кредитов, разрешенных для каждого выбора; например «20 кредитов из следующего:» (группа дополнительных модулей).