Инфологическая модель

diagram.png

Даталогическая модель

db.png Запрос для создания таблиц представлен в файле schema.sql

Прототипы веб-страниц

Алгоритм подбора кандидатов

  1. Отобрать кандидатов по совпадающему набору требуемых навыков. Если полного совпадения нет, то выбрать с наибольшим количеством совпадений.
  2. Среди выбранных кандидатов выбрать тех, кто хотел эту вакансию. Если таких нет, то опираться на зарплатные ожидания.
  3. Если по результатам предыдущего шага осталось несколько кандидатов, то выбрать по совпадениям дополнительных навыков.

Для лучшего подбора можно дополнить модель данных важностью (весами) навыков для вакансии, и при поиске частичных совпадений по навыкам считать сумму весов вместо количества.

SQL для топ-5 вакансий конкретной компании

select vacancy_id, name, count(*) as wanted_count
from applicant_wanted_vacancy
inner join vacancy v on applicant_wanted_vacancy.vacancy_id = v.id
where v.company_id = 1
group by vacancy_id
order by wanted_count desc limit 5;

Для простоты и наглядности ID компании был жестко задан, в реальности его нужно будет передать в prepared statement или в параметр хранимой функции.

Пример вывода запроса на тестовых данных

Команды для создания данных представлены в файле create_data.sql. img.png