Диаграммы сущность-связь позволяют использовать наглядные графические обозначения для моделирования сущностей и их взаимосвязей и предлагают некоторый набор стандартных обозначений для определения данных и отношений между ними. С помощью этого вида диаграмм можно описать отдельные компоненты концептуальной модели данных и совокупность взаимосвязей между ними, имеющих важное значение для разрабатываемой системы.
Первым шагом является извлечение информации из описания предметной области и выделение сущностей. Сущность – это класс однотипных объектов, информация о которых должна быть учтена в модели.
Исходя из описания предметной области в разрабатываемом программном средстве «Автоматизированный помощник правильно питания» можно выделить следующие сущности: блюдо, виды блюд, рецепт, приём пищи, пользователь, выбор пользователя, комментарии, статьи, как показано на рисунке 4.1.
Рисунок 4.1 - Сущности
Вторым шагом является идентификация связей.
Связь – это некоторая ассоциация между двумя сущностями. Связи позволяют по одной сущности находить другие сущности, связанные с нею.
Связь типа один-к-одному означает, что один экземпляр первой сущности (левой) связан с одним экземпляром второй сущности (правой). Связь один-к-одному чаще всего свидетельствует о том, что на самом деле мы имеем всего одну сущность, неправильно разделенную на две.
Связь типа один-ко-многим означает, что один экземпляр первой сущности (левой) связан с несколькими экземплярами второй сущности (правой). Это наиболее часто используемый тип связи. Левая сущность (со стороны "один") называется родительской, правая (со стороны "много") – дочерней.
Связь типа много-ко-многим означает, что каждый экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности, и каждый экземпляр второй сущности может быть связан с несколькими экземплярами первой сущности. Тип связи много-ко-многим является временным типом связи, допустимым на ранних этапах разработки модели. В дальнейшем этот тип связи должен быть заменен двумя связями типа один-ко-многим путем создания промежуточной сущности.
Каждая связь может иметь одну из двух модальностей связи:
- может;
- должен.
Модальность "может" означает, что экземпляр одной сущности может быть связан с одним или несколькими экземплярами другой сущности, а может быть и не связан ни с одним экземпляром.
Модальность "должен" означает, что экземпляр одной сущности обязан быть связан не менее чем с одним экземпляром другой сущности.
Связь может иметь разную модальность с разных концов.
Описанный графический синтаксис позволяет однозначно читать диаграммы, пользуясь следующей схемой построения фраз:
<Каждый экземпляр СУЩНОСТИ 1> <МОДАЛЬНОСТЬ СВЯЗИ> <НАИМЕНОВАНИЕ СВЯЗИ> <ТИП СВЯЗИ> <экземпляр СУЩНОСТИ 2>.
Каждая связь может быть прочитана как слева направо, так и справа налево.
В данном случае, каждый пользователь может производить какое-то количество выборов, а каждый выбор должен принадлежать одному пользователю. Каждый выбор может состоять из нескольких блюд, а каждое блюдо, в свою очередь, может входить в несколько выборов. Так же выбор пользователя обязан содержать приёмы пищи, а приёмы пищи могу относиться к нескольким пользователям. Каждое блюдо должно состоять из рецепта, а каждый рецепт обязан относится к блюду. Блюдо обязано относится к виду, а вид блюда, тем самым, может содержать несколько блюд. Пользователь может оставлять комментарии к статье в информационных блоках, а вот комментарий должен принадлежать одному пользователю, а также одной статье, когда статья может содержать много комментариев.
Связывание сущностей представлено на рисунке 4.2.
Рисунок 4.2 – Связи
Последним шагом моделирования является идентификация атрибутов.
Атрибут сущности – это именованная характеристика, являющаяся некоторым свойством сущности. Наименование атрибута должно быть выражено существительным в единственном числе (возможно, с характеризующими прилагательными).
Сущность «Блюдо» состоит из следующих атрибутов: код блюда, название, вид блюда, энергетическая ценность, количество. Сущность «Виды блюд» состоит из атрибутов: код вида, название. Сущность «Приём пищи» состоит из атрибутов: код приёма, приём пищи, проценты. Сущность «Рецепт» состоит из: код рецепта, код блюда, рецепт, изображение. Сущность «Пользователь» состоит из следующих атрибутов: код пользователя, имя, фамилия, логин, пароль, вес, рост, возраст, физическая активность, цель. Сущность «Выбор пользователя» состоит из атрибутов: код выбора, код пользователя, код блюда, код приёма пищи, дата выбора. Сущность «Комментарии» состоит из: код комментария, код пользователя, комментарий, код статьи. Сущность «Статьи» состоит из атрибутов: код статьи, текст, изображение, название, описание.
Диаграмма сущность-связь для автоматизированного помощника правильного питания предоставлена на рисунке 4.3.
Рисунок 4.3 – Диаграмма сущность-связь
В результате была спроектирована база данных правильного питания. База данных включает в себя информацию энергетической ценности блюд и подбору рецептов индивидуально для каждого.
Дата | Выполнено, % |
---|---|
2020-05-31 17:18:11 | 10 |
2020-05-29 11:30:19 | 100 |