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

Дополняющие роли ERD и диаграмм классов в разработке программного обеспечения
Диаграммы сущностей и отношений (ERD) и диаграммы классов являются важными инструментами в разработке программного обеспечения, но они выполняют разные функции и отражают различные аспекты проектирования системы.
ERD используются для визуального представления сущностей данных и их связей, и они обычно применяются на ранних этапах процесса разработки программного обеспечения для моделирования схемы данных. ERD показывают различные типы сущностей и их взаимосвязи, а также могут включать информацию об атрибутах, первичных и внешних ключах, а также кардинальности.
С другой стороны, диаграммы классов представляют классы и объекты в объектно-ориентированной системе, и они используются для моделирования поведения и структуры программных компонентов. Диаграммы классов показывают отношения между классами, их методы и атрибуты, а также иерархию наследования. Они обычно используются на поздних этапах процесса разработки программного обеспечения, после того как схема данных была определена и реализована.
Таким образом, зачем нам нужны и ERD, и диаграммы классов в разработке программного обеспечения? Основная причина заключается в том, что они отражают разные аспекты проектирования системы, и они дополняют друг друга. ERD помогают при проектировании схемы данных и определении связей между сущностями, что важно для хранения и извлечения данных. Диаграммы классов помогают при проектировании программных компонентов и определении их поведения, что важно для реализации бизнес-логики и пользовательских интерфейсов.
Используя как ERD, так и диаграммы классов, мы можем создать более полный и хорошо структурированный дизайн системы, учитывающий как данные, так и программные компоненты. ERD служат основой для схемы базы данных и хранения данных, в то время как диаграммы классов служат основой для программных компонентов и их взаимодействия. Это может помочь в создании программных систем, которые масштабируемы, поддерживаемы и эффективны, а также легче понимаются и модифицируются с течением времени.
Диаграмма сущностей и отношений против диаграммы классов
ERD в первую очередь касаются слоя модели данных программной системы, который часто является слоем модели в архитектуре Model-View-Controller (MVC). Цель ERD — предоставить визуальное представление схемы данных и её связей, которое может служить основой для реализации модели данных в базе данных или другой системе хранения.
С другой стороны, диаграммы классов более всесторонни в охвате архитектуры системы, поскольку они представляют классы и объекты во всех трёх слоях архитектуры MVC. Помимо представления слоя модели данных, диаграммы классов также могут отображать логику и поведение системы в слое контроллера, а также пользовательский интерфейс и взаимодействия в слое представления. Представляя все три слоя архитектуры системы, диаграммы классов могут помочь обеспечить правильное проектирование и интеграцию системы, а также эффективную работу различных компонентов.
В заключение, ERD в первую очередь касаются слоя модели данных программной системы, в то время как диаграммы классов охватывают все три слоя архитектуры MVC. Диаграммы классов предоставляют более полное представление об архитектуре системы и могут помочь обеспечить эффективную работу компонентов системы.
Описание проблемы — книжный магазин
Мы хотим разработать систему для управления запасами небольшого книжного магазина. Система должна отслеживать книги на складе, их авторов и количество доступных экземпляров. Клиенты могут покупать книги, и система должна соответственно обновлять запасы.
Разработайте ERD для системы книжного магазина
В этой ERD у нас четыре сущности: Книга, Инвентарь, Клиент, и Покупка. Сущность Книга представляет книги на складе и их авторов. Сущность Инвентарь сущность отслеживает количество экземпляров каждой книги, доступных. Покупатель сущность представляет покупателей книжного магазина, и Покупка сущность отслеживает книги, купленные каждым покупателем.
Связи между сущностями представлены линиями, соединяющими их. У нас есть связь один ко многим между Книга и Инвентарь (т.е. книга может иметь несколько экземпляров в инвентаре), связь многие к одному между Покупка и Покупатель (т.е. покупатель может совершить несколько покупок), и связь многие к одному между Покупка и Книга (т.е. книга может быть куплена несколько раз).
Разработайте диаграмму ERD

Разработайте диаграмму классов на основе логической диаграммы ERD
На этой диаграмме классов у нас четыре класса: Книга, Инвентарь, Покупатель, и Покупка. Атрибуты каждого класса представлены как приватные переменные. У нас те же связи, что и на диаграмме ERD, но они представлены по-другому. У нас связь один ко многим между Книга и Инвентарём, который представлен линией с острием стрелки, указывающей от Книге к Инвентарём и число 1 рядом с Книге классом и 0..* рядом с Инвентарём классом. У нас есть отношение один ко многим между Клиенту и Покупки и между Книге иПокупки, которые представлены линиями с остриями стрелок, указывающими от Покупки к Клиенту и Книге, соответственно.
Используя моделирование данных и выводя диаграмму классов, мы можем создать надежную и поддерживаемую программную систему для управления инвентарем небольшой книжной лавки.

Разработайте физическую схему ERD, уточнив логическую схему ERD
В этой физической схеме ERD мы используем синтаксис диаграммы классов для представления таблиц базы данных. Мы определяем макрос Таблица который принимает имя и описание в качестве аргументов и форматирует класс соответствующим образом. Мы также определяем ПервичныйКлюч и ВнешнийКлюч макросы для форматирования атрибутов первичного и внешнего ключей соответственно.
Мы создаем четыре таблицы: Книга, Инвентарь, Клиент, и Покупка, каждая со своими атрибутами. Мы используем [PK] и [FK] аннотации для указания атрибутов первичного и внешнего ключей соответственно. Мы также используем --|> стрелку, чтобы указать отношения между таблицами.
Используя физическую схему ERD, мы можем визуализировать схему базы данных и ее отношения, что может быть полезно при проектировании и оптимизации базы данных.

Напишите SQL для создания базы данных на основе физической схемы ERD
Эта схема включает четыре таблицы с их атрибутами и отношениями, следуя синтаксису языка SQL. Мы используем оператор CREATE TABLE для определения каждой таблицы, а также указываем атрибуты вместе с их типами данных и ограничениями, такими как PRIMARY KEY и ВНЕШНИЙ КЛЮЧ. Мы также используем ССЫЛКИ ключевое слово для указания связей между таблицами.
(*Снимок экрана Visual Paradigm – Создание баз данных из ERD)

Эта схема может быть использована для создания физической базы данных, в которой данные могут храниться и извлекаться в соответствии с определённой схемой.
СОЗДАТЬ ТАБЛИЦУ Книга (
ISBN VARCHAR(255) КЛЮЧ ОСНОВНОЙ,
название VARCHAR(255),
автор VARCHAR(255)
);СОЗДАТЬ ТАБЛИЦУ Инвентарь (
ISBN VARCHAR(255) КЛЮЧ ОСНОВНОЙ ССЫЛКИ Book(ISBN),
количество_экземпляров INT
);СОЗДАТЬ ТАБЛИЦУ Клиент (
id INT КЛЮЧ ОСНОВНОЙ,
имя VARCHAR(255),
почта VARCHAR(255)
);СОЗДАТЬ ТАБЛИЦУ Покупка (
id INT КЛЮЧ ОСНОВНОЙ,
customerId INT ССЫЛКИ Customer(id),
ISBN VARCHAR(255) ССЫЛКИ Book(ISBN),
дата DATE
);
Альтернативный подход к моделированию данных: отображение объектов на реляционные базы данных
ORM (отображение объектов на реляционные базы данных) — это альтернативный способ моделирования данных, который позволяет разработчикам взаимодействовать с реляционной базой данных с помощью объектно-ориентированного языка программирования, не прибегая к написанию сложных SQL-запросов. Иными словами, ORM предоставляет способ отображения между реляционной моделью данных базы данных и объектно-ориентированной моделью данных языка программирования.
Фреймворки ORM, такие как Hibernate, Django ORM и Sequelize, предоставляют набор инструментов и API, упрощающих работу с базами данных, позволяя разработчикам работать с объектами вместо таблиц и строк. Фреймворки ORM предоставляют способ определения классов объектов, представляющих сущности базы данных, и сопоставления атрибутов этих классов соответствующим столбцам базы данных. Они также предоставляют способ запроса базы данных с использованием объектно-ориентированного синтаксиса, что может сделать код более читаемым и легким для поддержки.

Использование ORM может упростить процесс моделирования данных, скрывая многие сложности реляционных баз данных, а также предоставляя более естественный способ взаимодействия с данными в объектно-ориентированном языке программирования. ORM также может облегчить переключение между различными базами данных или системами баз данных, поскольку фреймворк ORM обрабатывает большую часть специфических деталей базы данных.
Однако важно отметить, что ORM не всегда является лучшим решением для каждой ситуации. С ORM могут быть связаны компромиссы в производительности и масштабируемости, и она может плохо подходить для определённых типов приложений или моделей данных. В конечном счёте выбор между использованием ORM или традиционных методов моделирования данных будет зависеть от конкретных требований проекта, а также опыта и предпочтений команды разработчиков.
Заключение
Моделирование данных — это важный этап объектно-ориентированного проектирования, поскольку позволяет нам представлять данные и отношения между сущностями структурированно. Используя такие инструменты, как диаграммы сущность-связь (ERD) и диаграммы классов, мы можем визуализировать схему данных и её отношения, что помогает в проектировании эффективных и поддерживаемых программных систем.
В этой статье мы продемонстрировали, как создать физическую диаграмму сущность-связь и вывести из неё диаграмму классов. Мы также сгенерировали схему базы данных на основе физической диаграммы сущность-связь, которую можно использовать для создания физической базы данных. Следуя этим шагам, мы можем создать хорошо структурированную схему базы данных, которая представляет сущности данных и их отношения ясным и кратким образом.
В целом, моделирование данных является важным аспектом разработки программного обеспечения, и с помощью инструментов, таких как ERD и диаграммы классов, мы можем проектировать лучшие системы, которые легче понять, поддерживать и развивать с течением времени.






