1.1. ER-модель – первый шаг к учетной системе

Когда мы решаем некую учетную задачу, то можно сказать, что мы “моделируем реальность», то есть создаем некую “модель мира” для решения учетной задачи.


(!) Что такое «модель»? Возможно, что в детстве у вас были «модели автомобилей и самолетов”? Модель - это уменьшенная копия, повторяющая свой «реальный прототип». Модель – это не сам "объект", но это нечто похожее на прототип, что отражает его основные особенности.


Можно привести еще один пример модели. Карта местности  – это тоже модель, только модель не предмета, а участка поверхности земли. И хотя карта не есть сама местность ни по размеру, ни по свойствам, но она позволяет полностью ориентироваться на местности. В данном курсе мы будем использовать инструменты, позволяющие построить на разных уровнях модель, своего рода карту, которая даст возможность увидеть “всю область учета” целиком. Это будут ER-модель и “схема журнал-операция”.

ER-модель, “модель сущность-связь” (entity - relationship model, ER - model), является одним из  инструментов моделирования реальности. ER-модель позволяет построить модель чего угодно, при этом часто используется при проектировании реляционной базы данных.

“Модель сущность-связь” (ER-модель) использует три элемента:  сущностисвязи и атрибуты.

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

Связь  это некоторая ассоциация между сущностями. Связь каким-то образом “связывает” сущности между собой (отсюда и слово “связь”). Например, расчетный счет связан с банком, в котором он открыт. Сотрудник связан с подразделением, в котором он работает. Здание связано с собственником, которому принадлежит.

Атрибуты сущности  это некие характеристики, параметры, являющиеся некоторыми свойствами сущности. Примеры:

  1. Атрибутами для сотрудника это могут быть: ФИО, паспорт, адрес проживания, год рождения, пол, образование, семейное положение и т.д. 
  2. Атрибутами для номенклатуры: группа товаров, единица измерения, цвет, артикул, размеры и т.д.
  3. Атрибутами для здания: тип строения, назначение, этажность и т.д. 
  4. Атрибутами для подразделения: месторасположения, подчиненное подразделение,  руководитель, принадлежность филиалу и т.д.

Для того, чтобы легче осознать, что такое "сущность-связь-атрибут", можно использовать следующие две аналогии из грамматики русского языка. 

Первая аналогия - из морфологии языка. Можно представить, что Сущность – это имя существительное. Связь - это глагол. А Атрибут - это прилагательное.

Вторая аналогия - из синтаксиса языка. Можно представить, что Сущность – это подлежащее или дополнение. Связь - это сказуемое. Атрибут - это дополнение или обстоятельство. См. рисунок ниже.


(!) Мы не претендуем на академичность, наша главная задача в кратчайшие сроки получить практический результат, получить навыки в настройке учетных систем.


Тогда связи в ER-модели можно представить в виде предложений. См. рисунок ниже.

Приведем другие примеры. Все можно представить в виде синтаксического анализа предложения.

3) Товар А (сущность_1) поставлен (связь) поставщиком (сущность_2) на склад (сущность_3) в количестве 100 штук (атрибут).

4) Рабочий (сущность_1) взял деталь (сущность_2) совершил (связь) операцию (сущность_3) и получилась новая деталь (сущность_4), длинной 10 см, шириной 15 см (атрибут).

Далее нам потребуются характеристики Связи:

  1. тип связи
  2. обязательность связи
  3. степень связи

(1) Тип связи: 1:1, 1:n, n:n. Это очень важное понятие. Тип связи определяет очень многое в структурах таблиц, и в действиях над ними.

Связь 1:1 (читается “один-к-одному”) означает, что связь между сущностям такова, что экземпляру одной сущности всегда соответствует один экземпляр другой сущности. Пример, муж и жена. У мужа всегда одна жена, а у жены – один муж. Говорим о Фросе Ивановой и всегда понимаем, что ее муж Поликарп Иванов. И не может быть иначе. А говорим о Поликарпе Ивановом, и всегда понимаем, что его жена, Фрося Иванова. 

Связь типа 1:n (читается, как “один-к-многим”). Пример, ребенок и отец. У ребенка всегда один отец, но у отца может быть множество детей.

Связь типа n:1 (читается, как “многие-к-одному”).  Фактически, это предыдущий тип связи, только “взгляд с противоположной стороны”. Много детей может быть у одного отца, но для них он (биологический отец) может быть только один. 

Связь типа n:n (читается “многие-ко-многим”). Пример: друзья. Можно сказать: “У меня много друзей, и каждый из моих друзей имеет много друзей. Я дружу со многими и каждый из моих друзей дружит со многими, а не только со мной”.


(!) Тип связи крайне важное понятие. Так как во-многом именно тип связи  во многом и определяет архитектуру таблиц. В главе 5 это будет подробно объяснено.


(2) Обязательность (кардинальность) связи: Другими словами, “должна или может”. Женщина может иметь ребенка, а может и не иметь. Такая связь “не обязательна”, “не кардинальна”. А у ребенка должна быть мать (должна в биологическом смысле), без матери он не мог появиться на свет. Такая связь “обязательна” или “каринальна”.

(3) Степень связи: бинарная/небинарная связь. Часто связи связывают две сущности (это бинарные связи). Но иногда связь имеет смысл, только если связаны много сущностей в одну связь. Например, футбольные чемпионаты. Нельзя сказать, игра Бразилии:Германии. Не понятно о чем речь. Можно сказать: Чемпионат мира 2014, 1/2 финала, Бразилия:Германия (1:7). То есть смысл имеет только ОДНОВРЕМЕННАЯ связь четырёх сущностей:

чемпионат …  ↔ игра…↔ команда №1 ↔ команда №2

Чемпионата не достаточно, так как команды теоретически могут встретиться два раза (в группе и в финале)

Теперь примем следующие обозначения:

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

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

А у каждого Подразделения должен (именно должен) быть один руководитель из числа сотрудников”.

Теперь попробуем сформулировать то же самое, но используя специальные термины.

Сущность “Сотрудник” связана с сущностью “Подразделения” связью “один-к-многим”, при этом связь подразделения с сотрудниками кардинальна, (должен) а сотрудника с подразделениями не кардинальна (может, но не должен).

Единственное, что что в этой схеме может быть непонятно, почему Сотрудник “может”, а возле него значок “должен”. См. рисунок ниже.

На самом деле читается не значок который ближе к Сущности, а значок дальний от Сущности. Смотрите как это "читается" на рисунке ниже.

Потренируемся на других примерах. См. рисунок ниже.

Здание может принадлежать  населенному пункту (а может и не принадлежать, если это сруб староверов). А населенного пункта без зданий не бывает. При этом Здание всегда принадлежит одному  Населенному пункту, а Населенный пункт может иметь много Зданий.

Рассмотрим следующую схему “сущность-связь”.

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

Рассмотрим следующую схему “сущность-связь”.

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

Рассмотрим следующую схему “сущность-связь”.

У каждого может быть много друзей. И каждый “мой друг” может сам дружить с бесконечным количеством друзей, Хотя может случится и так, что у кого-то может и не быть ни одного друга.


(!) Стоит отметить, что не существует общих правил, что считать связью, а что сущностью. В рассмотренном выше примере мы приняли, что “Сотрудник - руководит (является руководителем) подразделения”. Здесь “руководит  – это связь.

Однако, можно эту ситуацию выразить по-другому. Ввести сущность "руководитель" (как должность). Тогда можно сказать, что сущность Сотрудник занял должность Руководитель. А Руководитель  связан с сущностью Подразделение. То есть “руководит” было связью, а стало сущностью.

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

Атрибуты изображаются на схеме - эллипсом. Эллипс связывается линией с той сущностью, чьим атрибутом он является. Ранее мы говорили, что используя синтаксис языка,  атрибуты можно представить, как определения и обстоятельства. Тогда, глядя на схему можно сказать, что “образованный (атрибут), женатый (атрибут) сотрудник, возглавляет московское (атрибут) подразделение…”. См. рисунок ниже. См. рисунок ниже.


(!) Иногда в схемах подчеркивают уникальный атрибут, который называют ключом. Это нужно для того, чтобы как-то идентифицировать (то есть отличать сущности). Например, ФИО для сотрудника, в общем случае, не может быть идентификатором, так как могут быть полные тезки. Но мы этот вопрос не рассматриваем подробно, так как эта задача проектирования решена в www.HubCloud.io.

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


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

(!) Ранее в статье про “плоские таблицы” Что может сводная таблица в Excel. Часть 1 мы вводили понятия «данные-измеряемые величины-ресурсы-цифры-показатели»”. Где их место в ER-модели? Числовые данные - это чаще всего атрибуты Связи.


 Подведем итоги главы: мы познакомились с ER-моделью и изучили ее инструменты на примере одной связи (сотрудник↔подразделение). Очевидно, что нам в учете будут нужны таблицы, а не схемы. Существует специальный алгоритм по переходу от схем ER-модели к таблицам и через две главы мы его рассмотрим. А пока мы немного забежим вперед и познакомимся каким образом осуществляется переход от ER-модели к таблицам на одном примере, на примере ER-модель связи сотрудник↔подразделение, которую мы рассмотрели.