Проектирование базы данных - требования к хранению

Предположим, мы хотим хранить университетские курсы и их требования к поступлению в базе данных. Например, бакалавр математики, бакалавр изобразительного искусства, магистр компьютерных наук и т. Д.

Каждый курс имеет свой собственный набор требований и может иметь разное количество общих требований. Например, чтобы иметь право на получение степени бакалавра по математике, вам может потребоваться A по математике и B по физике. Принимая во внимание, что BSc Fine Art может потребовать A в искусстве и что у пользователя есть портфолио. MSc может иметь минимальный возраст 25 лет и т. Д.

Предположим, у нас есть ученик, у которого есть свой набор атрибутов. Таким образом, они могут иметь A по математике и B по физике и C по химии и быть в возрасте 19 лет.

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

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

Я хотел бы реализовать это в MySQL. Схема может быть:

курсы

Я бы

название

требования

course_id

предмет

класс

Но тогда как сделать запрос к таблице, чтобы получить все подходящие курсы, когда у студента есть A по предмету 1, B по предмету 2 и т. Д.

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

Спасибо заранее, я надеюсь, что мое объяснение не слишком запутанно.

1 ответ

Хорошо. Я думаю, что вам нужен список тем, с кучей идентификаторов тем.

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

Теперь вы можете выполнить свой запрос, присоединившись к идентификаторам субъектов и добавив "where temp.grade <= course.grade.

Хитрость в этом заключается в подсчете строк. Если в нем столько же строк, сколько указано в курсе, значит, вы успешно нашли соответствие.

Этого достаточно, чтобы вы пошли?

Другие вопросы по тегам