Skip to content

Практическая работа №9

Проектирование базы данных и подготовка SQL-скриптов

Section titled “Проектирование базы данных и подготовка SQL-скриптов”

Цель работы:

  • спроектировать структуру базы данных для индивидуального веб-проекта;
  • определить таблицы, поля, первичные и внешние ключи;
  • связать базу данных с предметной областью и пользовательскими сценариями;
  • подготовить SQL-скрипт создания таблиц;
  • подготовить тестовые данные для дальнейшей разработки PHP-части;

Основные теоретические положения

Section titled “Основные теоретические положения”

Зачем нужна база данных в проекте?

Section titled “Зачем нужна база данных в проекте?”

База данных используется для хранения информации, с которой работает веб-приложение: пользователей, категорий, объектов каталога, заявок, заказов, бронирований, откликов и статусов обработки.

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

Контентная и операционная сущность

Section titled “Контентная и операционная сущность”
Тип сущностиНазначениеПримеры
Контентная сущностьТо, что отображается в публичной части сайтауслуга, товар, курс, мероприятие, вакансия
Операционная сущностьТо, что создаёт пользовательзапись, заказ, бронирование, заявка, отклик

Первичные и внешние ключи

Section titled “Первичные и внешние ключи”

Первичный ключ — уникальный идентификатор записи в таблице. Обычно это поле id.

Внешний ключ — поле, которое связывает одну таблицу с другой. Например, заявка пользователя может ссылаться на таблицы users, services и statuses.

user_id INT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)

Производственная ситуация

Section titled “Производственная ситуация”

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


Основные требования к практической работе

Section titled “Основные требования к практической работе”

В рамках практической работы необходимо:

  1. Определить основные таблицы базы данных.
  2. Определить поля таблиц.
  3. Определить первичные и внешние ключи.
  4. Описать связи между таблицами.
  5. Подготовить sql-скрипт создания таблиц.
  6. Подготовить тестовые данные.
  7. Описать структуру базы данных в документации.
  8. Сохранить sql-файлы в репозитории.

Задания для выполнения

Section titled “Задания для выполнения”

Задание 1. Определение таблиц базы данных

Section titled “Задание 1. Определение таблиц базы данных”

На основе паспорта проекта и требований определите таблицы. Минимально должны быть таблицы пользователей, категорий, основной контентной сущности, операционной сущности и статусов.

Задание 2. Описание таблиц в документации

Section titled “Задание 2. Описание таблиц в документации”

Создайте файл docs/database.md и опишите назначение каждой таблицы, поля и связи.

Задание 3. Определение связей

Section titled “Задание 3. Определение связей”

Опишите связи между пользователями, объектами каталога, статусами и пользовательскими действиями. Можно использовать текстовую схему вида users 1 ─── * applications.

Задание 4. Создание SQL-скрипта

Section titled “Задание 4. Создание SQL-скрипта”

Создайте файл database/schema.sql и подготовьте SQL-код создания таблиц.

Задание 5. Создание таблицы статусов

Section titled “Задание 5. Создание таблицы статусов”

Добавьте таблицу statuses и начальные статусы: новая, в обработке, подтверждена, отклонена, завершена.

Задание 6. Создание основной таблицы каталога

Section titled “Задание 6. Создание основной таблицы каталога”

Создайте таблицу для основной контентной сущности: services, books, courses, events, rooms, vacancies или другое название по теме.

Задание 7. Создание таблицы пользовательских действий

Section titled “Задание 7. Создание таблицы пользовательских действий”

Создайте таблицу для заявок, заказов, бронирований, записей или откликов. Таблица должна ссылаться на пользователя, объект каталога и статус.

Задание 8. Подготовка тестовых данных

Section titled “Задание 8. Подготовка тестовых данных”

Создайте файл database/seed.sql и добавьте тестовые категории, объекты каталога, статусы и тестового пользователя.

Задание 9. Проверка SQL-скриптов

Section titled “Задание 9. Проверка SQL-скриптов”

Импортируйте SQL-файлы в MySQL/MariaDB и проверьте, что таблицы создаются без ошибок.

Задание 10. Коммит результатов

Section titled “Задание 10. Коммит результатов”

Выполните коммит с сообщением add database schema and seed data.


Требования к результату

Section titled “Требования к результату”

К завершению практической работы должны быть подготовлены:

  • database/schema.sql;
  • database/seed.sql;
  • docs/database.md;
  • описание таблиц и связей;
  • тестовые данные;
  • коммит с результатами работы;

  1. Для чего нужна база данных в веб-приложении?
  2. Что такое первичный ключ?
  3. Что такое внешний ключ?
  4. Зачем нужна таблица статусов?
  5. Какие таблицы относятся к вашей контентной сущности?
  6. Какие таблицы относятся к вашей операционной сущности?

Рекомендуемые материалы

Section titled “Рекомендуемые материалы”
  1. Требования к итоговому проекту.
  2. Дорожная карта учебной практики.
  3. Git-репозиторий индивидуального проекта.
  4. Документация, подготовленная на предыдущих этапах.
  5. Материалы по теме практической работы.