Nano Hash - криптовалюты, майнинг, программирование

Таблица MySql с потенциально *очень* большим количеством столбцов

Мой друг, занимающийся подбором инженеров-программистов, хочет, чтобы я создал для него приложение.

Он хочет иметь возможность искать резюме кандидатов на основе навыков.

Как вы понимаете, потенциально существуют сотни, а возможно, и тысячи навыков.

Как лучше всего представить кандидата в таблице? Я думаю skill_1, skill_2, skill_n и т. д., но где-то там есть кандидат с более чем n навыками.

Также возможно, что в будущем в базу данных будет добавлено больше навыков.

Итак, как лучше всего представить навыки кандидата?


[Обновление] для @zohar, вот грубый первый проход по схеме. Любые комментарии?

введите здесь описание изображения


  • Таблица сопоставления навыков с кандидатами была бы реляционным способом. 07.04.2019
  • !! Я об этом не подумал!! Не стесняйтесь опубликовать ответ. Спасибо и голосуйте 07.04.2019
  • В этой схеме нет отношения кандидат к навыкам. 08.04.2019
  • Навыки связаны с работой. Кандидат использует разные навыки на разных работах, и полный список всех навыков можно получить, выполнив поиск по всем работам, связанным с кандидатом. Мне кажется это нормально, но я определенно приветствую улучшения (+1) 08.04.2019
  • Следуйте тегу [EAV]. И удачи. 22.04.2019

Ответы:


1

Вам нужно три таблицы (как минимум):

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

Одна таблица для навыков, которая будет содержать название навыка и, возможно, краткое описание (если это уместно).

и одна таблица для связывания кандидатов с навыками – candidatesToSkills – которая будет иметь отношение 1 ко многим с обеими таблицами – и первичный ключ, представляющий собой комбинацию идентификатора кандидата и идентификатора навыка.
Это реляционный способ создания связи "многие ко многим".
В качестве бонуса вы также можете добавить столбец для уровня навыков - новичок, средний уровень, опытный, эксперт и т. д.'.

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

07.04.2019
  • Поскольку мне также нужна история работы, я добавил таблицу jobs. Также один для companies - я добавил изображение схемы к вопросу. Вероятно, еще не хватает многих полей, но я думаю, что на этом этапе важны внешние ключи, чтобы показать связь таблицы. 07.04.2019
  • Проголосовал, но я бы предпочел форму единственного числа для имен таблиц. то есть Job вместо Jobs 07.04.2019
  • У меня проблемы с доступом к схеме в соответствии с этот вопрос. Вы можете помочь? 01.05.2019
  • Я думаю, что ответ Гордона, вероятно, лучший из тех, что я видел на этот вопрос. 02.05.2019
  • Новые материалы

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

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..