Лучшая техника для реализации матрицы умений

Недавно меня попросили разработать портал, где студенты могли бы загружать свои технические навыки, такие как: HTML, PHP, C++ и т. Д., А колледж мог искать студентов на основе обязательных и дополнительных навыков.

Первоначально я думал о сохранении информации об ученике и связанных с ним навыках, используя таблицу с двумя столбцами, где первый столбец представляет студента, а второй столбец содержит все навыки, связанные с этим студентом, разделенные запятой. Например, 001 HTML,C,C++,JAVA 002 C,JAVA 003 HTML,.NET ... ...

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

Любые указатели на методы хранения и алгоритмы поиска и т. Д. Будут полезны. Помощь очень ценится.

Спасибо

1 ответ

Простой способ справиться с этим - иметь три таблицы. Первая таблица содержит студентов и содержит уникальный идентификатор для каждого студента. Вторая таблица содержит навыки и имеет уникальный идентификатор для каждого навыка. Третья таблица предназначена для перекрестных ссылок на первые два и имеет два столбца: "Идентификатор студента" и "Идентификатор навыка".

Например, в таблице навыков есть запись для "C" с идентификатором 1 и для "C++" с идентификатором 2. У нас есть студент с идентификатором 1, который знает и C, и C++. Мы помещаем две записи в перекрестную ссылку, первая запись имеет идентификатор студента 1 и идентификатор навыка 1, вторая запись имеет идентификатор студента 1 и идентификатор навыка 2.

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

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