Индивидуальный рабочий лист обучающегося по дисциплине «ОП.08 Основы проектирования баз данных». Практическое занятие №1: физическое проектирование реляционных таблиц, выбор типов данных, спецификация первичных (естественных/суррогатных) и внешних ключей, настройка каскадных действий и ограничений целостности CHECK.
Логистическая компания осуществляет грузоперевозки. В автопарке числятся автомобили различных марок и грузоподъемности. Водители имеют удостоверения с открытыми категориями и трудовой стаж. Для каждого рейса оформляется Путевой лист, в котором фиксируются: назначенный автомобиль, водитель, дата/время выезда и возвращения, показания одометра (пробег при выезде и возвращении), а также объемы топлива в баке при выезде, объем заправки в рейсе и остаток при сдаче смены.
Перечислите таблицы и поля с указанием типов данных (INTEGER, BIGINT, VARCHAR(n), NUMERIC(p,s), TIMESTAMP, BOOLEAN) и ограничений NOT NULL / DEFAULT.
Обоснуйте, почему для таблицы «Автомобили» выбран суррогатный ключ id_avto, а не госномер или VIN. Укажите внешние ключи и аргументируйте политику при удалении (ON DELETE RESTRICT vs CASCADE).
Запишите условия предикатов CHECK: неотрицательность пробега, проверка возвращения (пробег при возвращении >= при выезде), корректность расхода топлива и дат рейса.
Гостиничный комплекс включает номерной фонд различных категорий («Стандарт», «Люкс», «Делюкс»), гостей и журнал бронирований. В бронировании фиксируются: заселяемый гость, выбранный номер, дата заезда, дата выезда, итоговая стоимость проживания и статус бронирования ('создано', 'подтверждено', 'заселен', 'завершено', 'отменено'). Каждый номер относится к одной категории со своей суточной базовой ценой и максимальной вместимостью.
Опишите состав полей, типы данных (SMALLINT, INT, BIGINT, VARCHAR, DATE, NUMERIC) и правила обязательности полей.
Сравните составной ключ (номер комнаты + дата заезда) и суррогатный id_брони. Почему в промышленной системе предпочтителен суррогатный ID? Укажите каскадное действие при удалении категории номера.
Сформулируйте предикаты CHECK: дата выезда строго больше даты заезда (data_vyezda > data_zaezda), валидация статуса бронирования, проверка совершеннолетия гостя или положительной цены.
Библиотека ведет каталог книг, физический учет каждого тома на стеллажах, базу читателей и журнал книговыдачи. Одно библиографическое издание (название, автор, международный код ISBN) может быть представлено в библиотеке несколькими десятками реальных физических экземпляров, каждый из которых имеет свой уникальный инвентарный штрихкод. В журнале выдачи фиксируются конкретный выданный экземпляр, читатель, дата выдачи, плановый срок возврата и фактическая дата возврата.
Определите таблицы, атрибуты и типы данных для учета фонда, физических томов и выдач.
Почему ISBN книги не может служить первичным ключом для выдачи книги читателю? Какая таблица связывается с журналом выдачи? Объясните поведение системы при попытке удалить читателя с невозвращенной книгой (ON DELETE RESTRICT).
Запишите проверки: срок возврата >= дата выдачи, фактическая дата возврата (если заполнена) >= дата выдачи, статус экземпляра ('в_фонде', 'на_руках', 'в_реставрации', 'списан').
Сервисный центр принимает в ремонт электронику (смартфоны, ноутбуки). Ведется учет клиентов, сервисных инженеров (мастеров), склада комплектующих (запчастей) и квитанций на ремонт (заказов). В рамках одного ремонта мастер может списывать несколько деталей со склада (таблица использованных запчастей). Заказ проходит статусы: 'принят', 'диагностика', 'в_работе', 'готов_к_выдаче', 'выдан', 'отказ'. Для каждой детали на складе фиксируется цена закупки и розничная цена для клиента.
Опишите атрибуты, типы данных (INT, BIGINT, VARCHAR, TEXT, NUMERIC, TIMESTAMP) и обязательность полей.
Сравните и обоснуйте каскадные правила: почему при удалении заказа допустимо удалять строки списания запчастей (CASCADE), но удаление клиента при наличии заказов строго блокируется (RESTRICT)? Что делать с заказом при увольнении мастера (SET NULL)?
Запишите условия: допустимые статусы заказа, цена продажи детали не ниже цены закупки, дата выдачи устройства позже даты приема.
| Критерий | Балл | Индикатор выполнения |
|---|---|---|
| Структура таблиц и типы данных | 0–2 б. | Полнота состава таблиц предметной области, атомарность полей, оптимальные и ресурсоэффективные типы (INTEGER, VARCHAR, NUMERIC, TIMESTAMP, BOOLEAN). |
| Первичные и внешние ключи, ссылочная целостность | 0–1 б. | Обоснованный выбор суррогатных/естественных ключей, корректная спецификация внешних ключей и аргументированные каскадные правила. |
| Ограничения целостности и самопроверка | 0–1 б. | Наличие ограничений NOT NULL, UNIQUE, сложных предикатов CHECK на бизнес-логику предметной области и заполненный чек-лист. |