Загрузка данных
Тема: Сбор и формализация требований к базе данных.
Цель работы:
Научиться выделять сущности, атрибуты и связи между ними на основе неструктурированного текстового описания, формировать техническое задание на проектирование базы данных.
Форма выполнения: индивидуальная письменная работа (отчёт).
Формат сдачи: текстовый документ в формате .docx или .pdf.
Имя файла: Фамилия_Имя_Группа_ПР1.docx
Исходные данные (описание предметной области)
Вы – аналитик в IT-компании. К вам обратился владелец сети кофеен «Кофе & Пончик» с просьбой разработать базу данных для автоматизации учёта заказов и ингредиентов. Ниже приведена стенограмма его устного запроса (обработайте её как задание заказчика).
Исходный текст (голосовое сообщение):
«Слушай, надо базу данных для моих кофеен. У меня три точки. В каждой точке есть свой менеджер. Мы продаем кофе и пончики. У каждого напитка есть название, цена и объем (маленький/большой). У пончиков — название, начинка и цена. Еще мы используем ингредиенты: молоко, сироп, мука и т.д. Для каждого ингредиента нужно знать, сколько у нас на складе осталось (количество) и единицу измерения (граммы, штуки, литры). Один заказ состоит из нескольких позиций (например, латте и два пончика). Заказ делает клиент (имя и номер телефона), а принимает его менеджер. Важно знать время заказа и итоговую сумму. Ну и еще: один ингредиент может входить в разные напитки, а напиток состоит из нескольких ингредиентов (рецепт). Например, для капучино нужно молоко и кофе. Пончики тоже из ингредиентов состоят, но там проще — мука, начинка, масло. Помоги разобраться, что за таблицы нужны и как они связаны».
Задание к выполнению
На основе данного описания составьте техническое задание на проектирование базы данных. Для этого выполните следующие шаги (они должны быть отражены в вашем отчёте):
1. Выделите все сущности (объекты), которые необходимо хранить в базе данных.
Перечислите их и кратко поясните, какую информацию они будут содержать.
Пример: «Сущность Кофейня – хранит данные о филиалах: адрес, телефон».
2. Для каждой сущности определите набор атрибутов (свойств).
• Укажите, какой атрибут(ы) может служить первичным ключом (уникальным идентификатором).
• Для каждого атрибута определите его примерный тип данных (числовой, строковый, дата/время, логический и т.п.) – это не обязательно детально, но желательно.
3. Опишите связи между сущностями.
Для каждой пары связанных сущностей укажите:
• Тип связи (один-к-одному, один-ко-многим, многие-ко-многим).
• Поясните, как эта связь работает в реальности.
• Если есть связи «многие-ко-многим», предложите способ их реализации (например, через промежуточную таблицу).
4. Сформулируйте бизнес-правила (ограничения целостности).
Перечислите как минимум 4–5 правил, которые должны соблюдаться в базе данных.
Примеры: «Остаток ингредиента не может быть отрицательным», «Цена напитка не может быть меньше 0», «Дата заказа не может быть позже текущего времени».
5. Составьте список вопросов заказчику (уточняющие вопросы).
Выявите, какие данные не описаны явно, но важны для правильного проектирования. Напишите 3–5 вопросов, которые вы бы задали владельцу кофеен, чтобы уточнить требования.
Примеры: «Нужно ли хранить историю изменений цен?», «Учитываются ли скидки или акции?», «Как быть, если один и тот же ингредиент поставляется от разных поставщиков?»
Структура отчёта
Отчёт должен содержать следующие разделы (можно просто озаглавить пункты):
1. Титульный лист (название работы, ФИО студента, группа, дата выполнения).
2. Перечень сущностей (с кратким описанием).
3. Атрибуты и ключи (для каждой сущности – список атрибутов, подчёркнутый первичный ключ).
4. Описание связей (таблица или текст со схемами связей).
5. Бизнес-правила (список ограничений).
6. Вопросы заказчику (перечень).
7. Вывод – что показалось сложным, какие трудности возникли при анализе.
Критерии оценки
Оценка Требования
5 (отлично) Все сущности и атрибуты выделены верно, определены все ключи. Связи описаны корректно (включая переходные таблицы для M:M). Сформулировано не менее 5 бизнес-правил и 5 вопросов. Работа оформлена аккуратно, структура соблюдена.
4 (хорошо) Выделены основные сущности и атрибуты, но пропущена 1–2 второстепенные сущности. Связи описаны в целом, верно, но есть недочеты. Бизнес-правил – 4, вопросов – 3. Оформление без серьёзных замечаний. Отчет сдан не в установленный срок (с опозданием)
3 (удовлетворительно) Перечислены только явные сущности (напитки, пончики, ингредиенты), но забыты «Заказ», «Клиент» или «Рецепт». Связи не описаны или описаны неверно. Бизнес-правила отсутствуют или очень поверхностные. Вопросов нет или они не по существу.
2 (неудовлетворительно) Работа представляет собой переписанный исходный текст без каких-либо аналитических выводов. Сущности не выделены, структура не соблюдена. Отчет не предоставлен
Индивидуальные варианты заданий
Вариант №1. Коворкинг-центр для студентов
«Мы открываем коворкинг для студентов. Есть помещения – номер комнаты, название, вместимость, оснащение (проектор, доска). Студенты – ФИО, группа, телефон, email. Студент может забронировать помещение на определённое время – бронирование содержит дату, время начала и конца, цель (занятие, мероприятие). Одно помещение может иметь много бронирований, но в одно время – только одно. Также мы предоставляем оборудование (ноутбуки, проекторы) – у каждого инвентаря ID, название, состояние. Студент может взять оборудование на время – фиксируем дату выдачи, дату возврата, состояние при выдаче. Один студент может взять несколько единиц, один инвентарь – только у одного студента в данный момент. Есть платные услуги (печать, кофе) – цены, и студент может заказывать их в рамках бронирования (связь M:M через заказ услуг).»
________________________________________
Вариант №2. Доставка еды из студенческой столовой
«Мы организуем доставку обедов из столовой в общежития. Блюда – название, состав, цена, вес, категория (первое, второе, салат). Ингредиенты – название, единица измерения, текущий остаток на складе. Каждое блюдо состоит из нескольких ингредиентов (рецепт) – один ингредиент используется во многих блюдах. Студенты – ФИО, комната в общежитии, телефон. Заказ – дата, время, статус (принят, готовится, доставлен), общая сумма. В одном заказе может быть несколько позиций (блюдо + количество). Доставку осуществляют курьеры – ФИО, телефон. Каждый заказ закреплён за одним курьером. Также ведём учёт поставок ингредиентов – поставщики (название, контакты) и партии (дата, количество, цена закупки).»
________________________________________
Вариант №3. Аренда спортивного инвентаря в вузе
«В университете есть пункт проката спортивного инвентаря. Инвентарь – название, категория (мяч, ракетка, лыжи), состояние, залоговая стоимость. Студенты – ФИО, группа, номер студенческого. Аренда – дата выдачи, планируемая дата возврата, фактическая дата возврата, сумма оплаты. Один студент может взять несколько единиц инвентаря, но одна единица – только одному студенту в данный момент. Есть тренеры – ФИО, специализация, контакты. Тренер может закрепить за собой инвентарь для занятий (на время тренировки). Также ведётся журнал ремонта – инвентарь может отправляться в ремонт, фиксируем дату, описание поломки, дату возврата. Спортивные секции – название, расписание, и студенты записываются в секции (связь M:M через запись).»
________________________________________
Вариант №4. Лабораторный практикум по физике
«Мы ведём учёт лабораторных работ по физике. Лабораторные установки – название, инвентарный номер, состояние. Студенты – ФИО, группа. Каждая лабораторная работа – название, описание, количество часов. Группа студентов выполняет работу на конкретной установке в определённое время – фиксируем дату, время, установку, группу. Одна установка может использоваться в разных работах, но в одно время – только одна группа. Результаты работы – каждый студент сдаёт отчёт, ставится оценка (баллы). Также есть методические материалы (файлы) – прикрепляются к работе. Преподаватели – ФИО, кафедра – ведут работы и принимают отчёты. Один преподаватель может вести несколько работ. Храним историю сдачи отчётов с датами.»
________________________________________
Вариант №5. Волонтёрский проект «Экологический марафон»
«Мы организуем волонтёрские мероприятия по уборке территорий. Мероприятия – название, дата, место, описание, количество часов. Волонтёры – ФИО, возраст, контактный телефон, навыки. Один волонтёр участвует во многих мероприятиях, в одном мероприятии – много волонтёров. Участие фиксируем – отметка о приходе, количество часов, отзыв волонтёра. Есть координаторы – ФИО, телефон – назначаются на мероприятия (один координатор может вести несколько мероприятий). Материалы (перчатки, мешки, вода) – название, количество, единица измерения, и их расход на мероприятие записывается. Спонсоры – название, сумма пожертвования – поддерживают проект. Ведём учёт собранного мусора (в кг) на каждом мероприятии.»
________________________________________
Вариант №6. Онлайн-платформа для курсов по программированию
«Мы создаём платформу с курсами по программированию. Курсы – название, описание, уровень сложности, цена. У каждого курса есть модули – название, порядковый номер, содержание (текст/видео). Студенты – ФИО, email, пароль. Студент может записаться на курс – фиксируем дату записи, статус (активен, завершён). Один студент – много курсов, один курс – много студентов. Прогресс – для каждого модуля отмечаем, пройден ли он (дата завершения). Задания внутри модулей – студент выполняет, преподаватель (ФИО, специализация) проверяет и ставит оценку. Один преподаватель ведёт несколько курсов. Есть отзывы о курсах – студент оставляет оценку и текст.»
________________________________________
Вариант №7. Буккроссинг в студенческом кампусе
«В кампусе работает буккроссинг – обмен книгами. Книги – название, автор, год издания, жанр, состояние. Пользователи (студенты, преподаватели) – ФИО, контакты, статус (читатель, даритель). Книга может быть взята во временное пользование – фиксируем дату взятия, планируемую дату возврата, фактическую дату возврата. Один пользователь может взять несколько книг, но одна книга – только у одного пользователя. Также пользователь может подарить книгу в фонд – записываем дату дарения. Книги могут быть зарезервированы – резерв на конкретную дату. Есть жанровые категории – название, описание. Ведём учёт популярности – сколько раз книгу брали. Администраторы (сотрудники) управляют фондом.»
________________________________________
Вариант №8. Автомойка самообслуживания
«Мы запускаем автомойку самообслуживания. Есть посты мойки – номер, статус (свободен, занят, на ремонте), стоимость за минуту. Клиенты – номер телефона (для системы лояльности), ФИО, автомобиль (госномер, марка). Сеанс мойки – дата, время начала и окончания, выбранный пост, итоговая сумма. Один клиент может провести несколько сеансов в разное время. Мы предлагаем услуги – названия (пена, воск, сушка), цена за минуту. Клиент выбирает набор услуг на сеанс – связь M:M через детали сеанса. Также у нас есть расходные химикаты – название, объём, остаток, и для каждой услуги нужны определённые химикаты (рецепт). Ведём учёт запасов и заказы поставщикам.»
________________________________________
Вариант №9. Фотостудия для студентов
«Мы открываем фотостудию для студентов. Студии – номер, название, площадь, оснащение (фон, свет). Клиенты – студенты, ФИО, группа, телефон. Бронирование – дата, время, длительность, цель (портфолио, мероприятие). Одна студия может быть забронирована на много сеансов, но не одновременно. Дополнительные услуги – аренда костюмов, реквизита, визажист – у них своя цена. Клиент может заказать несколько услуг в рамках бронирования (связь M:M). Фотографы – ФИО, стаж, контакты, их можно пригласить на съёмку. Готовые фотографии – клиент получает ссылку на загрузку, храним дату готовности. Ведём журнал оборудования (камеры, объективы) – их состояние, и при бронировании может быть указан конкретный объектив.»
________________________________________
Вариант №10. Магазин сувениров с доставкой по вузам
«Мы продаём сувениры (кружки, футболки, значки) с символикой вузов. Товары – название, категория, цена, описание, остаток на складе. Поставщики – название, ИНН, контакты – поставляют товары, один товар может быть от нескольких поставщиков, один поставщик поставляет много товаров (M:M через поставки). Заказы от клиентов (студентов) – ФИО, email, адрес доставки, телефон. В заказе несколько позиций (товар + количество), дата заказа, статус. Доставку осуществляют курьеры – ФИО, телефон. У каждого заказа есть трек-номер. Также ведём акции – скидки на определённые товары в период дат, и заказ может быть привязан к акции. Отзывы клиентов – оценка, текст, дата.»