Лучшая техника для реализации матрицы умений
Недавно меня попросили разработать портал, где студенты могли бы загружать свои технические навыки, такие как: 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.
Когда вам необходимо выяснить, какими навыками обладает учащийся, просто найдите все строки в таблице перекрестных ссылок для этого идентификатора учащегося. И наоборот, если вы хотите узнать, какие учащиеся имеют определенный навык, вы просто найдете все строки с этим идентификатором навыка.