Давайте теперь поработаем с системой базы данных MyFlix Video Library, чтобы помочь понять концепцию ER-диаграмм. Мы будем использовать эту базу данных для всей практической работы в оставшейся части этого урока
MyFlix — это юридическое лицо, которое сдает в аренду фильмы своим членам. MyFlix хранит свои записи вручную. Теперь руководство хочет перейти на СУБД
Вспомним шаги по разработке диаграммы EER для базы данных:
Участники — эта сущность будет хранить информацию об участниках.
Фильмы — эта сущность будет содержать информацию о фильмах
Категории — эта сущность будет содержать информацию, которая помещает фильмы в различные категории, такие как «Драма», «Действие», «Эпический» и т. Д.
Прокат фильмов — эта сущность будет хранить информацию о фильмах, сдаваемых в аренду ее членам.
Платежи — эта сущность будет хранить информацию о платежах, произведенных участниками.
Участники и фильмы
Из приведенного выше сценария мы можем видеть, что нужно использовать отношение «многие ко многим». Реляционные базы данных не поддерживают отношения «многие ко многим». Нам нужно ввести новую сущность - таблицу связей. Эту роль будет играет таблица MovieRentals. Она имеет отношение один-ко-многим с таблицей участников и отношение один-ко-многим с таблицей фильмов.
Фильмы и категории лиц
Из этого можно сделать вывод, что характер отношений между категориями и таблицей фильмов один-ко-многим.
Участники и платежные организации
Из этого можно сделать вывод, что характер взаимоотношений между участниками и платежными организациями один-ко-многим.
Модель улучшенного отношения сущностей (EER)
Модель Enhanced Entity Relationship (EER) — это модель данных высокого уровня, которая предоставляет расширения для исходной модели Entity Relationship (ER). EER Models поддерживает более детальный дизайн. EER Modeling появилась как решение для моделирования очень сложных баз данных.
В рабочей среде MySQL Workbench перейдите в режим моделирования и нажмите кнопку «+»
Дважды щелкните кнопку Добавить диаграмму, чтобы открыть рабочее пространство для диаграмм ER.
Появляется окно EER Diagram
Давайте посмотрим на два типа объектов, с которыми мы будем работать.
Участники организации будет иметь следующие атрибуты
Кликните по кнопке "Таблица"
В верхней части окна диаграммы появится запрос параметров для создаваемой таблицы:
В поле Collation Выбираем utf8mb4_0900_ai_ci и кликаем по области диаграммы - появится сущность с названием table1 (остальные параметры не меняем)
Что такое Collation и зачем их так много?
Параметр Collation указывает серверу, как нужно сортировать и сравнивать строки. Вот, например, строки “Apple” и “apple”. Они разные или нет? Это зависит от указанного Collation. Если с регистром всё более менее понятно, то что делать с примером “елка” и “ёлка”? Считать их как одинаковые или как разные? Это все тоже в Collation.
В Collation есть несколько частей:
- CI — Case Insensitive — без учета регистра;
- CS — Case Sensitive — c учетом регистра;
- AS — Accent Sensitive — с учетом аксонов или диакритических знаков, проще говоря 'a' не считается равным 'ấ'.
- AI — Accent Insensitive — без учета аксонов или диакритических знаков, проще говоря 'е' считается равным 'ё'.
- UTF8 — позволяет хранить данные в UTF8.
- mb4 — минимальное количество байт для хранения символа utf (utf8 без суффикса mb4 использует 3 байта на символ, и в этот набор не входят, например, emoji)
- bin — простое побитовое сравнение
Дважды кликните мышкой по этой сущности. Появится окно свойств, показанное ниже:
Задайте название сущности (поле Table Name) и добавьте атрибуты (Column Name)
Должно получиться примерно такое:
Повторите эти действия для всех сущностей, в итоге должно получиться примерно так:
Обратите внимание:
Кликаем по иконке создания связи "один-ко-многим"
Затем последовательно кликаем по внешнему ключу MemberMovie.MemberId и Member.id (нужные поля подсвечиваются под курсором)
Повторяем эти действия для всех связей, в итоге получится примерно следующее: