ОП.08 · Основы проектирования баз данных · Практическая №3

Преобразование реляционной БД в сущности и связи

На основе разработанной модели 3НФ создайте ER-диаграмму с первичными и внешними ключами и кардинальностями.

Редактор: diagrams.net / draw.ioОдна сквозная модельОтвет: редактируемый XML

Один проект — три этапа

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

Практическая №1Черновая модель
Практическая №2Нормализация
Практическая №3ER-диаграмма

Две части занятия: сначала изучите объяснения и примеры, затем перейдите к самостоятельным заданиям по магазину «ТехноКорзина».

1

От реляционных таблиц к ER-диаграмме

ER-диаграмма (Entity–Relationship Diagram) — схема сущностей, их атрибутов и связей. Она помогает увидеть, какие данные есть в системе и как записи одной таблицы соотносятся с записями другой. Для этой работы используем логическую ER-диаграмму: прямоугольник сущности с полями, PK/FK и связями между таблицами.

Сущность

Предмет, событие или понятие, о котором система хранит сведения: автор, книга, заказ.

Атрибут

Свойство сущности: имя, дата, цена, код. В логической ER-модели соответствует полю таблицы.

Связь

Правило, показывающее, как одни записи относятся к другим: отдел содержит сотрудников.

Кардинальность

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

ОТДЕЛPK отдел_idназваниеэтаж СОТРУДНИКPK сотрудник_idимяFK отдел_id1 → NУ отдела многосотрудников
Условная ER-диаграмма посторонней предметной области. Отдел (1) связан с множеством сотрудников (N); сотрудник ссылается на отдел через FK.
Во второй работе вы уже сформировали логические таблицы 3НФ. Сейчас не нужно проектировать новые таблицы с нуля: используйте их как сущности, добавьте точные связи и бизнес-ограничения.
2

PK, FK и ссылочная целостность

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

АВТОРЫPK: автор_idимястранаauthor_id = 7КНИГИPK: книга_idназваниеFK: автор_idauthor_id = 7совпадают
Значение FK в таблице «Книги» соответствует PK автора. В реальной СУБД это может контролироваться ограничением FOREIGN KEY.

Если удалить автора, на которого ссылаются книги, база должна выполнить определённое правило: запретить удаление, удалить зависимые записи или изменить ссылки. Конкретное действие определяется требованием системы и ограничениями СУБД. На учебной схеме можно подписать желаемое правило.

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

3

Типы связей и «воронья лапка»

Один к одному (1:1) — одному объекту соответствует не более одного другого. Один ко многим (1:N) — одна запись может иметь несколько связанных записей. Многие ко многим (M:N) — у каждой стороны может быть много связей с другой.

В нотации Crow's Foot («воронья лапка») вертикальная черта означает «один», кружок — «ноль», развилка — «много». Комбинация возле каждого конца линии задаёт допустимое количество записей на этом конце.

Ровно одинНоль или одинОдин или многоНоль или много1..1 (обязательно)0..1 (необязательно)1..N (минимум один)0..N (любое количество)
Условные окончания связей. В diagrams.net выберите библиотеку Entity Relation или настройте окончания соединителей.
ТипПримерКак читать
1:1Пользователь — настройка профиляКаждому пользователю соответствует не более одной настройки
1:NАвтор — книги (упрощённая модель)У автора может быть много книг; у книги один автор
M:NСтуденты — учебные курсыКаждый студент может посещать много курсов, каждый курс — иметь много студентов
Тип связи и обязательность — не одно и то же. «Один ко многим» не сообщает, допускается ли ноль. Учитывайте бизнес-правила: новый автор может пока не иметь книг, а книга в этой упрощённой модели должна иметь автора.
4

Как изображать многие ко многим

В реляционной модели связь M:N обычно реализуют через отдельную ассоциативную таблицу (таблицу-связку). Представим систему записи на курсы: студент посещает несколько курсов, а каждый курс посещают несколько студентов.

СТУДЕНТКУРСM:N напрямуюСТУДЕНТstudent_id PKЗАПИСЬ_НА_КУРСstudent_id PK, FKcourse_id PK, FKКУРСcourse_id PK1:NN:1
Верхняя часть — предметное отношение M:N; нижняя — его реализация через запись на курс с двумя связями 1:N.

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

Разница между атрибутом сущности и атрибутом связи важна: оценка за конкретный курс принадлежит записи студента на этот курс, а не студенту вообще.
5

Практические приёмы в diagrams.net

В библиотеке Entity Relation есть табличные фигуры и соединители с разными обозначениями кардинальности. Включите её через More Shapes → Software → Entity Relation → Apply. Поля можно добавлять как строки таблицы, а окончания линий выбирать в настройках стиля соединителя.

Файл Правка Вид Упорядочить …Библиотека фигурТаблица Объект учебной схемыPK — поле идентификатораатрибут_1атрибут_201 · Черновик+Рабочий холст
Вам понадобится новый лист в том же проекте. Итоговая ER-диаграмма будет отдельной страницей, а не новым файлом.
  1. Сначала расставьте сущности с полями и ключами, чтобы подписи не перекрывались.
  2. Проводите соединители между конкретными таблицами; не заменяйте связь неформальной стрелкой без кардинальности.
  3. Подпишите бизнес-правила там, где краткая нотация недостаточна (например, должна ли у заказа быть хотя бы одна позиция).
  4. Избегайте пересекающихся линий, используйте изгибы под прямым углом и выравнивание.
  5. Проверьте, что все указанные FK действительно ведут к ключам соответствующих таблиц.
6

Практические задания: ER-модель «ТехноКорзины»

Работайте в том же файле, где есть страницы 01 · Черновик, 02 · 1НФ, 03 · 2НФ и 04 · 3НФ. Применяйте информацию о 4 заказах, 3 клиентах, 4 товарах и 2 категориях из предыдущих работ.

Задание 1. Постройте страницу «05 · ER-диаграмма»

  1. Создайте новую вкладку 05 · ER-диаграмма.
  2. Перенесите из 3НФ на этот лист все логические таблицы как ER-сущности. Не удаляйте прежние версии схемы.
  3. В каждой сущности отобразите название, поля, первичный ключ и внешние ключи.
  4. Если поле входит в составной PK и одновременно является FK, обозначьте обе роли.
  5. Добавьте легенду обозначений PK, FK и используемой нотации.
Проверка: структура соответствует вашей 3НФ; никакие исходные данные и необходимые сущности не потеряны.

Задание 2. Свяжите сущности

  1. Определите и отобразите связи между покупателями и заказами, заказами и позициями, товарами и позициями, категориями и товарами.
  2. Поставьте кардинальность возле обоих концов каждой связи.
  3. Проверьте, каким образом связь «один заказ содержит несколько товаров» реализуется через позиции заказа, а не непосредственным FK от заказа к единственному товару.
  4. Отметьте обязательность: можно ли хранить клиента без заказов; должна ли позиция иметь существующий заказ и товар; может ли категория временно не содержать товаров.
Проверка: каждый FK получает соответствующую связь; отсутствуют необоснованные прямые M:N в физически представленной логической схеме.

Задание 3. Проверьте схему на исходных данных

  1. Оформите на полях листа блок «Контрольные сценарии».
  2. Разберите заказ 201: укажите, какие сущности и записи понадобятся, чтобы найти покупателя и две товарные позиции.
  3. Разберите клиента К01: на каких связях основан поиск всех его заказов?
  4. Разберите товар Т02: как получить заказы, в которые он входил?
  5. Объясните на схеме, что произойдёт при попытке создать позицию с кодом несуществующего товара.
Проверка: все четыре сценария описаны выносками рядом со схемой, без отдельного текстового отчёта.

Задание 4. Финальная проверка качества

  1. Сведите пересечения линий к минимуму, выровняйте сущности и выдержите единый визуальный стиль.
  2. Добавьте заголовок и небольшое описание проекта с указанием автора и группы.
  3. Проверьте полную согласованность: поля FK присутствуют в нужных таблицах, связи не противоречат бизнес-правилам.
  4. Убедитесь, что в исходном проекте пять страниц, включая все предыдущие этапы.
  5. Сохраните рабочий файл .drawio и экспортируйте все страницы в итоговый XML.
Дополнительное задание повышенной сложности (необязательное)

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

📤 Сохранение и сдача

Ответом является один редактируемый XML-файл из diagrams.net. Скриншоты, PNG, PDF, Word и ссылки не заменяют XML. Страница материала не загружает работу автоматически — отправить файл нужно самостоятельно через сервис.

  1. Сохраните рабочий проект через File → Save или File → Save As в формате .drawio. Этот файл оставьте себе для продолжения.
  2. Выберите File → Export as → XML. Включите All Pages, чтобы в файл вошли все страницы проекта. Не включайте Selection Only. Параметр Compressed можно отключить для удобства проверки XML.
  3. Скачайте XML и назовите файл tehnokorzina_Фамилия_ПР03.xml (вместо слова «Фамилия» укажите свою фамилию латиницей или кириллицей).
  4. Для проверки откройте экспортированный XML через File → Open From → Device в diagrams.net и убедитесь, что он редактируется и содержит нужные страницы.
  5. Перейдите на homework.probochka-corp.ru, откройте соответствующую практическую работу №3, прикрепите полученный .xml и завершите отправку в интерфейсе сервиса.

Этот XML содержит историю всех этапов проектирования — от первого черновика до итоговой ER-диаграммы.

Чек-лист перед отправкой