Бизнес план создания базы данных

Бизнес план создания базы данных thumbnail

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

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

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

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

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

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

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

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

Необходимость в оперативной и достоверной информации нужна не только курортникам и командировочным. Базы данных в Интернет востребованы во всех сферах жизнедеятельности человека. Чего стоит только сфера недвижимости!

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

Немаловажная часть нашей жизни – это ремонтные работы дома. Например, вы решили отремонтировать ванну и туалет. Чтобы выбрать плитку, сушку для полотенца, унитаз, ванну и смесители, вам придется потратить около месяца. Обратившись в фирму, вы будете выбирать товар по каталогу, после чего фирма будет звонить поставщику, чтобы уточнить, есть ли товар на складе. Затем все вопросы о наличии и внешнем виде сотрудники будут вновь согласовывать с вами, вы будете приезжать, отстаивать в очереди таких же клиентов, как вы, чтобы утрясать все эти вопросы. Это просто каменный век какой-то в эпоху стремительного развития информационных технологий и Интернета! И такая отсталость царит везде, особенно в глубинке.

Это побуждает вас создать информативный и востребованный Интернет-ресурс, который даст немалый стабильный доход. Вы можете взяться за оформление любой сферы деятельности человека, не промахнетесь.

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

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

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

Источник

Резюме руководства

Президент и менеджер по продажам
Митчелл Р. Джереми будет играть ключевую роль в тесном взаимодействии с разработчиками программного обеспечения и приложений создавать продукты, предлагаемые отделом развития бизнеса. Мы совместно создадим необходимые примеры приложений и обеспечим необходимую творческую среду, необходимую для завершения интерактивных продуктов. За это время я также буду работать над созданием группы партнеров по поддержке и обучением этих людей на всех этапах маркетинга, поддержки клиентов и поддержки продуктов.

ПРИМЕЧАНИЕ: Оплату Митчелла Джереми выплачивают на уровне холдинга компания, JTB Technologies, Inc., и не отражена в плане для этого Отдела.

7.1 План персонала

Сотрудник службы поддержки / менеджера по обслуживанию клиентов — ассоциированная / менеджер по поддержке клиентов будет работать во всех областях продаж , маркетинга и поддержки клиентов, обеспечивая поддержку клиентов, постоянно проводя обучение новым продуктам.

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

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

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

Ассистент разработчика приложений / Тестер обеспечения качества (неполный рабочий день) — Этот сотрудник будет помогать в разработке определенных модулей стандартного интегрированного программного пакета и отвечать за все тесты QA, включая поддержание текущего списка ошибок, обработку отзывов от других сотрудников JTB и внешних клиентов.

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

План персонала
Год 1 Год 2 Год 3 Год 4 Год 5
Разработчик Персонал
Разработчик приложений $ 48 000 $ 50 000 $ 50 000 $ 50 000 $ 50 000
( ) $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 9,000 $ 10,800 Итого $ 94,800 $ 74,800 $ 74,800
$ 74,800 $ 74,800 Сотрудники отдела продаж и маркетинга Помощник по связям с общественностью / менеджер $ 7,800 $ 33 000
$ 34 000 $ 34 000 $ 34 000 Сотрудник службы поддержки клиентов $ 3,600 $ 14 000
$ 16 000
$ 18 000 $ 20 000 (общий) Партнер по продажам и маркетингу $ 1,700 $ 3000 $ 3000
$ 3000 $ 3000 Итого $ 13100 $ 50000 $ 53000
$ 5 5 000 $ 57 000 Общий и административный персонал Имя или название $ 0 $ 0
$ 0 $ 0 $ 0 Другое $ 0 $ 0
$ 0
$ 0 $ 0 Итого $ 0 $ 0 $ 0
$ 0 $ 0 Другой персонал Имя или название $ 0 $ 0
$ 0 $ 0 $ 0 Другое $ 0 $ 0
$ 0
$ 0 $ 0 Итого $ 0 $ 0 $ 0
$ 0 $ 0 Всего людей 6 6 6
6 6 Общая сумма оплаты $ 107,900 $ 124 800 $ 127,800
$ 129,800 $ 131,800 Нужны реальные финансовые показатели? Мы рекомендуем использовать LivePlan как самый простой способ создания автоматических финансовых показателей для вашего собственного бизнес-плана.Создайте собственный бизнес-план

none

Интересные статьи

2020-12-09

Ограниченное время: United MileagePlus Explorer повышает бонус за регистрацию

Внимание, частые United flyers: Если вы наблюдаете за кобрендовой United MileagePlus Explorer Card, теперь может быть подходящее время для подачи заявки.

2020-12-09

United MileagePlus Explorer против Chase Sapphire Предпочитаемый: Carry Sapphire, Fly United

United MileagePlus Explorer не может быть лучшей карточкой даже для частых United flyers. Рассмотрим вместо этого Chase Sapphire Preferred. Он позволяет передавать точки в соотношении 1: 1 к United и другим авиакомпаниям и предлагает более богатую структуру вознаграждения.

2020-12-09

Объединенная кредитная карта может получить ваши прошлые ограничения на перенос

Пассажирам, летающим по новым тарифам без излишеств, не будет разрешено использовать накладные бункеры. Но владельцы карт MileagePlus освобождены от лимита.

2020-12-09

Univision MasterCard: прочитайте это перед подачей заявки!

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

2020-12-09

11 лучших способов отправить деньги

Наш сайт сравнивает сборы, скорость и другие функции, чтобы выделить лучшие варианты внутренних и международных денежных переводов.

2020-12-09

Univision Tarjeta: Ли Эсто Антес Де Апликар

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

Популярные посты — 2020

  • Совет экспертов: 10 советов и советов для успешного дня открытия
  • Объяснения и описания
  • Facebook для малого бизнеса

Популярные категории

  • Бизнес-планирование
  • Финансовый словарь
  • ИНВЕСТИРОВАНИЕ

Источник

Введение

Как это часто бывает, архитектору БД нужно разработать базу данных под конкретное решение.
Однажды в пятницу вечером, возвращаясь на электричке домой с работы, я подумал о том, как бы я создал сервис по найму сотрудников в разные компании. Ведь ни один из существующих сервисов не позволяет быстро понять насколько подходит тебе кандидат. Нет возможности создать сложные фильтры, включающие или исключающие совокупность определенных навыков, проектов или позиций. Максимум, что обычно предлагают сервисы — фильтры по компаниям и частично по навыкам.

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

Для начала, разберем создание базы данных в MS SQL Server для сервиса поиска соискателей на работу.

Этот материал можно перенести и на другую СУБД такую как MySQL или PostgreSQL.

Основы правил проектирования

Для проектирования схемы базы данных, нужно вспомнить 7 формальных правил и саму концепцию нормализации и денормализации. Они и лежат в основе всех правил проектирования.

Опишем более детально 7 формальных правил:

  1. отношение один к одному:

    1.1) с обязательной связью:

    примером может выступать гражданин и его паспорт: у любого гражданина должен быть паспорт; паспорт один для каждого гражданина

    Реализовать данную связь можно двумя способами:

    1.1.1) в одной сущности (таблице):

    Рис.1. Сущность Citizen

    Здесь таблица Citizen представляет собой сущность гражданина, а атрибут (поле) PassportData содержит все паспортные данные гражданина и не может быть пустым (NOT NULL).

    1.1.2) в двух разных сущностях (таблицах):

    Рис.2. Отношение сущностей Citizen и PassportData

    Здесь таблица Citizen представляет собой сущность гражданина, а таблица PassportData — сущность паспортных данных гражданина (самого паспорта). Сущность гражданина содержит атрибут (поле) PassportID, который ссылается на первичный ключ таблицы PassportData. В свою очередь сущность паспортных данных содержит атрибут (поле) CitizenID, которое ссылается на первичный ключ CitizenID таблицы Citizen. Поле PassportID таблицы Citizen не может быть пустым (NOT NULL). Также здесь важно поддерживать целостность поля CitizenID таблицы PassportData, чтобы обеспечить связь один к одному. Иными словами, поле PassportID таблицы Citizen и поле CitizenID таблицы PassportData должны ссылаться на одни и те же записи как если бы это была одна сущность (таблица), представленная в пункте 1.1.1.

    1.2) с необязательной связью:

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

    Реализовать данную связь можно двумя способами:

    1.2.1) в одной сущности (таблице):

    Рис.3. Сущность Person

    Таблица Person представляет собой сущность человека, а атрибут (поле) PassportData содержит все его паспортные данные и может быть пустым (NULL).

    1.2.2) в двух сущностях (таблицах):

    Рис.4. Отношение сущностей Person и PassportData

    Таблица Person представляет собой сущность человека, а таблица PassportData — сущность паспортных данных человека (самого паспорта). Сущность человека содержит атрибут (поле) PassportID, который ссылается на первичный ключ таблицы PassportData. В свою очередь сущность паспортных данных содержит атрибут (поле) PersonID, которое ссылается на первичный ключ PersonID таблицы Person. Поле PassportID таблицы Person может быть пустым (NULL). Здесь также важно поддерживать целостность поля PersonID таблицы PassportData. Это нужно, чтобы обеспечить связь один к одному. Поле PassportID таблицы Person и поле PersonID таблицы PassportData должны ссылаться на одни и те же записи как если бы это была одна сущность (таблица), показанная в пункте 1.2.1. Или же данные поля должны быть неопределенными, то есть, содержать NULL.

  2. отношение один ко многим:

    2.1) с обязательной связью:

    примером могут выступать родитель и его дети. У каждого родителя есть как минимум один ребенок.

    Реализовать данную связь можно двумя способами:

    2.1.1) в одной сущности (таблице):

    Рис.5. Сущность Parent

    Таблица Parent представляет сущность родителя, а атрибут (поле) ChildList содержит информацию о детях. Данное поле не может быть пустым (NOT NULL). Обычно типом поля ChildList выступают неполно структурированные данные (NoSQL) такие как XML, JSON и т д.

    2.1.2) в двух сущностях (таблицах):

    Рис.6. Отношение сущностей Parent и Child

    Таблица Parent представляет сущность родителя, а таблица Child — сущность ребенка. У таблицы Child есть поле ParentID, ссылающееся на первичный ключ ParentID таблицы Parent. Поле ParentID таблицы Child не может быть пустым (NOT NULL).

    2.2) с необязательной связью:

    примером может выступать человек, у которого могут быть дети или их может не быть.

    Реализовать данную связь можно двумя способами:

    2.2.1) в одной сущности (таблице):

    Рис.7. Сущность Person

    Таблица Parent представляет сущность родителя, а атрибут (поле) ChildList содержит информацию о детях. Данное поле может быть пустым (NULL). Обычно типом поля ChildList выступают неполно структурированные данные (NoSQL) такие как XML, JSON и т д.

    2.2.2) в двух сущностях (таблицах):

    Рис.8. Отношение сущностей Person и Child

    Таблица Parent представляет сущность родителя, а таблица Child — сущность ребенка. У таблицы Child есть поле ParentID, ссылающееся на первичный ключ ParentID таблицы Parent. Поле ParentID таблицы Child может быть пустым (NULL).

    2.2.3) в одной сущности со ссылкой на саму себя при условии, что у сущностей (таблиц) родителя и ребенка будут одинаковые наборы атрибутов (полей) без учета ссылки на родителя:

    Рис.9. Сущность Person со связью на саму себя

    Сущность (таблица) Person содержит атрибут (поле) ParentID, который ссылается на первичный ключ PersonID этой же таблицы Person и может содержать пустое значение (NULL).

    Также данная реализация является примером реализации отношения «многие к одному» с необязательной связью.

  3. отношение многие к одному:

    Эту связь можно рассмотреть зеркально к приведенной выше связи один ко многим. Иными словами, отношение сущности «дети» к сущности «родители», где обязательная связь будет при условии, что у ребенка есть хотя бы один родитель. Если же участвуют все дети, в том числе и находящиеся в детских домах, отношение будет с необязательной связью.

  4. отношение многие ко многим:

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

    Реализовать данное отношение, с привлечением NoSQL, можно так же, как в описанных выше отношениях. Однако, в рамках реляционной модели обычно такое отношение реализуют через 3 сущности (таблицы):

    Рис.10. Отношение сущностей Person и RealEstate Таблицы Person и RealEstate представляют соответственно сущности человека и недвижимости. Связываются данные сущности (таблицы) через сущность (таблицы) PersonRealEstate. Атрибуты (поля) PersonID и RealEstateID ссылаются на первичные ключи PersonID таблицы Person и RealEstateID таблицы RealEstate соответственно. Обратите внимание, что для таблицы PersonRealEstate пара (PersonID; RealEstateID) всегда является уникальной и потому может выступать первичный ключем для самой связующей сущности PersonRealEstate.

    Также данное отношение можно реализовать через более чем три сущности. Для этого добавляются нужные атрибуты, которые ссылаются на первичные ключи необходимых соответствующих сущностей. Такая реализация схожа с примерами, описанными выше в пунктах 1.1.2 и 1.2.2.

Отношения один ко многим и многие к одному можно реализовать через более чем две сущности. Для этого добавляются нужные атрибуты, которые ссылаются на первичные ключи необходимых соответствующих сущностей. Такая реализация схожа с примерами, описанными выше в пунктах 1.1.2 и 1.2.2.

А где же семь формальных правил?

Вот они:

  1. п.1 (п.1.1 и п.1.2) — первое и второе формальные правила
  2. п.2 (п.2.1 и п.2.2) — третье и четвертое формальные правила
  3. п.3 (аналогично п.2) — пятое и шестое формальные правила
  4. п.4 — седьмое формальное правило

В тексте выше эти семь формальных правил объединены в четыре блока по функционалу.

Говоря о нормализации, нужно понимать ее суть. Нормализация ведет к уменьшению повторяемости хранения информации, а следовательно и к уменьшению возможности появления аномалий в данных. Однако, нормализация при дроблении сущностей приводит к более сложным построениям запросов для манипуляций с данными (вставки, модификации, выборки и удаления).

Обратным процессом нормализации называется денормализация. Это упрощение построения запросов доступа к данным за счет укрупнения и вложенности сущностей (например, как было показано выше в пунктах 2.1.1 и 2.2.1 с помощью неполно-структурированных данных (NoSQL)).

Вот и вся суть правил проектирования баз данных.

А вы уверены, что поняли отношения в семи формальных правилах? Именно поняли, а не узнали? Ведь знать и понимать — две совершенно разных концепции.

Объясню более детально. Спросите себя, можете ли вы за пару часов набросать пусть и укрупненную по сущностям, но модель базы данных для любой предметной области и для любой информационной системы? (тонкости и детали можно достроить, поспрашивав аналитиков и представителей заказчиков). Если вопрос вас удивил, и вы думаете, что это невозможно, значит вы знаете семь формальных правил, но не понимаете их.

Почему-то многие источники игнорируют тот факт, что эти отношения были не придуманы, а выявлены. Они изначально существуют в реальном мире как между субъектами, так и между субъектами и объектами.

Также, эти отношения могут меняться, переходя из один к одному к одному ко многим, многие к одному или многие ко многим. Обязательность связи может меняться или остаться неизменной.

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

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

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

Сон был про семью, в которой есть отец, мать и дети. Отец погибает в автомобильной катастрофе, а мать начинает пить, и детей в итоге забирают в детский дом. Эти дети надолго остаются без родителей. Затем у некоторых детей появляются попечители, их тоже несколько.

Вы проследили, какие отношения были между субъектами, и как менялись эти отношения?
Давайте присмотримся внимательнее.

  • Когда семья была полной, с несколькими детьми, отношение между родителями и детьми имело вид многие ко многим.
  • Когда остались мать и дети, отношение между родителем и детьми стало один ко многим с обязательной связью. Однако, в любой семье, где может и не быть детей, это отношение будет таким же, но уже с необязательной связью.
  • А вот со стороны детей отношение к родителю было как многие к одному с обязательной связью пока родителя не лишили родительских прав.
  • Когда дети оказались в детском доме — отношение изменилось на многие к одному с необязательной связью.
  • Когда у детей появились попечители, связь между ними стала многие ко многим: у каждого попечителя могут быть другие подопечные дети, а у каждого ребенка могут быть другие попечители (родители).

Отношение между мужем и женой один к одному с обязательной связью при официальной брака или один к одному с необязательной связью до регистрации. Жена может быть только одна, как и муж может быть только один. По крайней мере, в России. Но в другой стране возможно многоженство, и тогда связь между мужем и женами будет один ко многим, а между женами и мужем — многие к одному.

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

Стоит постоянно практиковаться: наблюдать за людьми и выявлять существующие отношения как между субъектами, так и между субъектами и объектами. Выше описывался гражданин и его паспорт как отношение один к одному с обязательной связью. В тоже время, пример человека и его паспорта — это отношение один к одному с необязательной связью.

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

Также вы увидите, что реализовать отношение можно разными способами, а сами отношения могут меняться. Модель (схема) базы данных — это «снимок» отношений между сущностями в определенный момент времени. Именно поэтому важно определить как сами сущности — образы объектов из реального мира или предметной области, так и их отношения между собой с учетом изменений в будущем.

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

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

Проектирование схемы базы данных для поиска соискателей на работу

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

Для начала, определим, что важно для сотрудников из компании, которые ищут кандидатов:

  1. для HR:

    1.1) компании, где работал соискатель
    1.2) позиции, которые ранее занимал соискатель в данных компаниях
    1.3) навыки и умения, которыми соискатель пользовался в работе;
    а также продолжительность работы соискателя в каждой компании на каждой позиции и длительность использования каждого навыка и умения

  2. для технического специалиста:

    2.1) позиции, которые занимал соискатель в данных компаниях
    2.2) навыки и умения, которыми соискатель пользовался в работе
    2.3) проекты, в которых участвовал соискатель;
    а также продолжительность работы соискателя на каждой позиции и в каждом проекте, длительность использования каждого навыка и умения

Для начала выявим нужные сущности:

  1. Сотрудник (Employee)
  2. Компания (Company)
  3. Позиция (должность) (Position)
  4. Проект (Project)
  5. Навык (Skill)

  • Компании и сотрудники относятся как многие ко многим, так как сотрудник мог работать в нескольких компаниях, а в компании работают многие люди.
  • Аналогично относятся позиции и сотрудники: несколько сотрудников могут занимать одну позицию как в рамках как одной, так и нескольких компаний.
  • С другой стороны, сотрудник мог работать на разных позициях как в рамках одной, так разных компаний. Таким образом, отношение между позициями и компаниями — многие ко многим.
  • Аналогично и по проектам: проекты относятся ко всем выше рассмотренным сущностям как многие ко многим.
  • Для простоты будем считать, что в проекте сотрудник использует один набор навыков.
  • Тогда проекты и навык относятся как многие ко многим.

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

Рис.11. Схема базы данных для поиска соискателей на работу

Здесь таблица JobHistory выступает как сущность истории работы каждого соискателя. То есть, это резюме, которое педставляет отношения многие ко многим между сущностями сотрудник, компания, позиция и проект.

Проекты и навыки относятся друг другу как многие ко многим и потому связываются между собой через сущность (таблицу) ProjectSkill.

Когда вы понимаете отношения между субъектами и между субъектами и объектами — уже упомянутые семь формальных правил — эту или схожую схему можно реализовать «на коленке»: на листке бумаги, мене чем за час. И это еще с учетом усталости после плодотворного рабочего дня.

Здесь можно было упростить схему добавления данных, если «навыки» вложить в сущность «проекты» через неполно структурированные данные (NoSQL) в виде XML, JSON или просто перечислять названия навыков через точку с запятой. Но это бы усложнило выборку с группировкой по навыкам и фильтрацию по отдельным навыкам.

Подобная модель лежит в основе базы данных проекта Geecko.

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

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

Немного лирики

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

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

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

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

Послесловие

Диаграммы для примеров были реализованы с помощью инструмента Database Diagram Tool for SQL Server. Однако, подобный функционал есть и в DBeaver.

Источники

  • SQL Database Design Basics with Example
  • Geecko
  • Microsoft SQL documentation
  • SSMS
  • Database Diagram Tool for SQL Server

Источник