Индивидуальный рабочий лист обучающегося по дисциплине «ОП.08 Основы проектирования баз данных». Практическое занятие №3: преобразование концептуальных сущностей и бинарных связей (1:1, 1:M, M:N) в реляционную структуру таблиц, проектирование промежуточных ассоциативных таблиц с составными первичными ключами, атрибутами связи и правилами ссылочной целостности.
Данные обучающегося
Инструкция: Разработайте нормализованную схему реляционных таблиц по выбранному варианту. Декомпозируйте связи многие-ко-многим (M:N) с созданием промежуточных таблиц, укажите атрибуты связей, первичные ключи (составные/суррогатные), внешние ключи и действия ссылочной целостности. Все данные сохраняются в браузере автоматически.
Вариант 1: Система онлайн-кинотеатра
Концептуальная спецификация предметной области:
Сущность «Режиссер»: ФИО, страна, дата рождения, краткая биография.
Сущность «Актер»: ФИО, дата рождения, творческие награды.
Сущность «Фильм»: название киноленты, год выпуска, бюджет, хронометраж.
Связь 1:M «Режиссер — Фильмы»: один режиссер-постановщик может снять несколько фильмов; у фильма в рамках модели ровно один ведущий режиссер.
Связь M:N «Актеры — Фильмы»: актер может сниматься во многих фильмах; в фильме снимается множество актеров.
Атрибуты связи «Кастинг / Участие в фильме»: исполняемая роль (имя персонажа), флаг главной роли (да/нет), размер индивидуального гонорара.
Задание 1. Структура реляционных таблиц и типов данных (2 балла)
Опишите перечень реляционных таблиц (включая связующую таблицу для декомпозиции связи M:N). Укажите имена колонок, типы данных и обязательность (NOT NULL):
Задание 2. Разрешение связей и первичные/составные ключи (1 балл)
Обоснуйте размещение внешнего ключа в связи 1:M «Режиссер — Фильмы». Сформулируйте первичный ключ ассоциативной таблицы «Фильм_Актер» (почему он составной?):
Задание 3. Внешние ключи, каскадные правила и самопроверка (1 балл)
Определите правила ссылочной целостности (RESTRICT / CASCADE) для внешних ключей связующей таблицы и таблицы фильмов. Обоснуйте риски удаления:
Вариант 2: Служба доставки еды
Концептуальная спецификация предметной области:
Сущность «Клиент»: ФИО, уникальный номер мобильного телефона, email, адрес доставки.
Сущность «Блюдо»: наименование в меню, категория (пицца, напитки, десерты), текущая цена в меню, вес/объем.
Сущность «Заказ»: номер заказа, дата и время создания, статус, общая итоговая сумма.
Связь 1:M «Клиент — Заказы»: клиент оформляет множество заказов; каждый заказ принадлежит конкретному клиенту.
Связь M:N «Заказ — Блюда»: в одном заказе может быть несколько разных блюд; одно и то же блюдо заказывается множеством клиентов.
Атрибуты связи «Позиция заказа»: количество заказанных порций блюда, цена за единицу блюда на момент оформления заказа.
Задание 1. Структура реляционных таблиц и типов данных (2 балла)
Опишите перечень реляционных таблиц (включая связующую таблицу «Позиция_заказа»). Укажите названия атрибутов, типы данных и обязательность:
Задание 2. Разрешение связей и первичные/составные ключи (1 балл)
Обоснуйте структуру составного первичного ключа таблицы «Позиция_заказа». Объясните, почему атрибут «Цена_на_момент_заказа» обязан храниться в связующей таблице, а не браться из меню блюд:
Задание 3. Внешние ключи, каскадные правила и самопроверка (1 балл)
Определите политики ON DELETE для связей Заказ -> Клиент, Позиция -> Заказ и Позиция -> Блюдо. Почему удаление блюда из меню не должно удалять архив заказов?
Вариант 3: Фитнес-клуб
Концептуальная спецификация предметной области:
Сущность «Клиент»: номер клубной карты, ФИО, телефон, дата рождения.
Сущность «Тренер»: ФИО, спортивная специализация, ставка за индивидуальное занятие, телефон.
Сущность «Абонемент»: тип абонемента, дата активации, дата окончания срока действия, остаток занятий. Связь 1:M с клиентом.
Сущность «Тренировка»: дата и точное время проведения занятия, длительность в минутах, статус, фактическая стоимость.
Связь M:N «Клиенты — Тренеры»: клиенты занимаются у разных тренеров; тренер проводит тренировки с множеством клиентов. Разрешается через связующий журнал индивидуальных тренировок.
Задание 1. Структура реляционных таблиц и типов данных (2 балла)
Опишите структуру таблиц «Тренеры», «Клиенты», «Абонементы» и связующей таблицы-журнала «Индивидуальные_тренировки». Приведите типы данных:
Задание 2. Разрешение связей и первичные/составные ключи (1 балл)
Обоснуйте первичный ключ связующей таблицы «Индивидуальные_тренировки». Какие ограничения UNIQUE требуются для предотвращения двойной записи тренера или клиента на одно и то же время?
Задание 3. Внешние ключи, каскадные правила и самопроверка (1 балл)
Укажите действия ссылочной целостности при удалении клиента или тренера. Почему абонементы удаляются каскадно с клиентом, а история тренировок должна защищаться (RESTRICT)?
Вариант 4: Ритейл-маркетплейс
Концептуальная спецификация предметной области:
Сущность «Покупатель»: email (логин), ФИО, телефон, дата регистрации.
Сущность «Корзина_покупок»: дата последнего обновления, общая расчетная стоимость. Связь 1:1 с Покупателем.
Сущность «Скидочный_купон»: промокод, размер скидки в процентах, срок действия. Связь 1:M с Покупателями (прикрепленный персональный купон).
Связь M:N «Корзина — Товары»: в корзине может лежать множество товаров; товар добавляется в корзины сотен покупателей. Разрешается через связующую таблицу «Элемент_корзины» (с атрибутом «Количество»).
Задание 1. Структура реляционных таблиц и типов данных (2 балла)
Опишите 5 реляционных таблиц схемы (Покупатель, Товар, Купон, Корзина, Элемент_корзины). Приведите типы данных и обязательность полей:
Задание 2. Разрешение связей 1:1, 1:M и M:N (1 балл)
Как физически на уровне ключей реализуется строгая связь 1:1 между Покупателем и Корзиной? Как организован составной первичный ключ в таблице «Элемент_корзины»?
Задание 3. Внешние ключи, каскадные правила и самопроверка (1 балл)
Обоснуйте политику SET NULL при удалении скидочного купона и политику CASCADE при удалении корзины покупок: