Перейти к содержанию

Итоговый проект: база данных интернет-магазина

Начало урока

Итоговый проект: база данных интернет-магазина

Спроектировать, построить, защитить и получить отчёты — от начала до конца

Главная идея: реальная база данных приложения — это не один хитрый запрос, а система. В этом проекте вы смоделируете небольшой интернет-магазин как четыре связанные таблицы, зададите нормализованную схему, защищённую ограничениями, добавите индексы для нужных запросов, будете оформлять заказы безопасно внутри транзакции и отвечать на бизнес-вопросы с помощью CTE и CASE. Здесь сходятся все навыки из тем 1-13.
К концу вы сможете:
  • превращать требования магазина в сущности и связи и читать ER-диаграмму,
  • писать нормализованную (3НФ) схему, чьи операторы CREATE TABLE обеспечивают целостность через ключи, NOT NULL, UNIQUE и CHECK,
  • выбирать индексы, соответствующие реальным запросам магазина,
  • оформлять заказ атомарно, чтобы остатки и заказы никогда не расходились,
  • строить отчёты (лучшие клиенты, выручка по товарам, продажи по месяцам) с помощью WITH и CASE.

1. Предметная область: сущности и связи

Начните с языка бизнеса. У магазина есть клиенты (customers), которые оформляют заказы (orders); каждый заказ содержит один или несколько товаров (products), и для каждого товара в заказе мы записываем, сколько купили и по какой цене на тот момент. Эти существительные становятся таблицами:

СущностьЗначениеКлючевая связь
customersлюди, которые могут покупатьодин клиент -> много заказов
ordersотдельное событие покупкиодин заказ -> много order_items
productsтовары в продажеодин товар -> много order_items
order_itemsодна товарная строка одного заказасвязывает заказ и товар

Заказ может содержать много товаров, а товар может встречаться во многих заказах — это связь многие-ко-многим. Мы никогда не соединяем две таблицы напрямую через такую связь; вместо этого вводим соединительную (промежуточную) таблицу order_items, которая хранит одну строку на каждую пару «товар в заказе» плюс дополнительные факты (количество, цену), относящиеся к этой паре.

customers PK customer_id email (UNIQUE) full_name created_at orders PK order_id FK customer_id order_date status order_items PK order_item_id FK order_id FK product_id quantity, unit_price products PK product_id name price stock 1 клиент -> N заказов 1 заказ -> N строк 1 товар -> N строк
Две связи один-ко-многим (customers-orders, products-order_items) разрешают связь многие-ко-многим через мост order_items.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя