Загрузка данных


Конечно. Ниже можно прямо использовать как основу для курсовой, ТЗ или описания информационной системы для сайта заказа тортов и капкейков.

1. Предметная область

Предметная область — заказ, изготовление и доставка кондитерских изделий, а именно тортов и капкейков, через веб-сайт.

Сайт предназначен для взаимодействия между клиентами и кондитерской. Клиент может ознакомиться с ассортиментом продукции, выбрать подходящий торт или набор капкейков, указать необходимые параметры заказа, оформить заказ и выбрать способ его получения.

Кондитерская, в свою очередь, получает информацию о заказах, обрабатывает их, назначает статус заказа, контролирует изготовление и доставку.

Основные объекты предметной области:
	•	Клиент — человек, оформляющий заказ.
	•	Товар — торт или капкейк/набор капкейков.
	•	Категория товара — например, торты, капкейки, праздничные наборы.
	•	Заказ — оформленная клиентом заявка на изготовление и получение продукции.
	•	Состав заказа — конкретные товары и их количество.
	•	Оплата — информация об оплате заказа.
	•	Доставка — информация о способе и адресе получения.
	•	Ингредиенты — продукты, используемые при изготовлении.
	•	Статус заказа — текущее состояние заказа.
	•	Отзыв — оценка и комментарий клиента о товаре.
	•	Промокод — код для предоставления скидки.
	•	Сотрудник — работник кондитерской, занимающийся обработкой заказов.
	•	Администратор — сотрудник, управляющий сайтом и его содержимым.

2. Назначение сайта

Основная задача сайта — автоматизировать процесс заказа кондитерских изделий.

Система должна позволять:
	1.	Представлять каталог продукции.
	2.	Показывать подробную информацию о каждом товаре.
	3.	Предоставлять возможность выбора параметров торта.
	4.	Формировать корзину.
	5.	Оформлять заказ.
	6.	Рассчитывать стоимость заказа.
	7.	Выбирать способ получения.
	8.	Производить оплату.
	9.	Отслеживать статус заказа.
	10.	Оставлять отзывы.
	11.	Управлять товарами и заказами сотрудникам кондитерской.
	12.	Управлять пользователями и содержимым сайта администратору.

3. Функционал сайта

3.1. Регистрация и авторизация

Пользователь может:
	•	зарегистрироваться;
	•	указать имя;
	•	указать номер телефона;
	•	указать электронную почту;
	•	создать пароль;
	•	войти в личный кабинет;
	•	выйти из аккаунта;
	•	восстановить пароль.

После авторизации пользователь получает доступ к истории своих заказов и личным данным.

4. Каталог товаров

На сайте располагается каталог тортов и капкейков.

Для каждого товара отображается:
	•	название;
	•	фотография;
	•	описание;
	•	категория;
	•	цена;
	•	вес;
	•	количество порций;
	•	состав;
	•	возможные вкусы;
	•	доступные размеры;
	•	доступные варианты оформления.

Например:

Торт «Красный бархат»
	•	Вес: 1 кг
	•	Порции: 8–10
	•	Вкус: красный бархат
	•	Начинка: сливочный крем
	•	Цена: 1800 ₽
	•	Доступное оформление: стандартное / праздничное / индивидуальное.

5. Фильтрация и поиск

Пользователь может найти необходимый товар с помощью:
	•	поиска по названию;
	•	категории;
	•	цены;
	•	веса;
	•	вкуса;
	•	количества порций;
	•	типа мероприятия.

Например:

	Пользователь выбирает «День рождения» → торты до 3000 ₽ → 10–15 порций.

6. Выбор индивидуальных параметров

Для некоторых тортов пользователь может самостоятельно выбрать характеристики.

Например:

Торт:
	•	размер;
	•	вес;
	•	вкус коржей;
	•	начинку;
	•	крем;
	•	цвет;
	•	оформление;
	•	надпись на торте;
	•	количество ярусов.

Также можно добавить комментарий кондитеру.

Например:

	«Надпись: С днём рождения, Аня! Сделать оформление в розовых цветах».

Для капкейков:
	•	количество;
	•	вкус;
	•	цвет оформления;
	•	начинка;
	•	надпись;
	•	оформление.

7. Корзина

Пользователь может добавить несколько товаров в корзину.

В корзине отображаются:

Информация	Пример
Товар	Торт «Красный бархат»
Количество	1
Цена	1800 ₽
Доп. оформление	+300 ₽
Итог	2100 ₽

Пользователь может:
	•	изменить количество;
	•	удалить товар;
	•	изменить параметры;
	•	добавить промокод;
	•	увидеть итоговую стоимость.

8. Оформление заказа

При оформлении заказа пользователь указывает:

Контактные данные
	•	имя;
	•	телефон;
	•	электронную почту.

Данные о получении
	•	способ получения;
	•	дату;
	•	время.

Возможные способы:

Самовывоз
	•	выбрать пункт выдачи.

Доставка
	•	город;
	•	улица;
	•	дом;
	•	квартира;
	•	комментарий курьеру.

9. Оплата

Пользователь выбирает способ оплаты:
	•	банковская карта;
	•	онлайн-оплата;
	•	оплата при получении — если такая возможность предусмотрена.

После оплаты в системе сохраняется информация:
	•	сумма;
	•	дата оплаты;
	•	способ оплаты;
	•	статус оплаты;
	•	номер транзакции.

10. Статусы заказа

Заказ может иметь следующие статусы:
	1.	Новый — заказ только что создан.
	2.	Принят — сотрудник подтвердил заказ.
	3.	В изготовлении — кондитер начал изготовление.
	4.	Готов — заказ изготовлен.
	5.	Передан курьеру — заказ отправлен на доставку.
	6.	Доставлен — клиент получил заказ.
	7.	Завершён — заказ полностью выполнен.
	8.	Отменён — заказ отменён.

Клиент может видеть текущий статус в личном кабинете.

11. Личный кабинет клиента

В личном кабинете пользователь может:
	•	посмотреть личные данные;
	•	изменить имя;
	•	изменить телефон;
	•	изменить email;
	•	посмотреть историю заказов;
	•	посмотреть текущие заказы;
	•	посмотреть статус заказа;
	•	повторить предыдущий заказ;
	•	оставить отзыв;
	•	посмотреть свои отзывы.

12. Отзывы

После получения заказа клиент может оставить отзыв.

Отзыв содержит:
	•	пользователя;
	•	товар;
	•	оценку от 1 до 5;
	•	текст отзыва;
	•	дату;
	•	фотографию — опционально.

Например:

	⭐⭐⭐⭐⭐
«Очень вкусный торт, оформление получилось именно таким, как я хотела».

Администратор может модерировать отзывы.

13. Избранное

Пользователь может добавлять понравившиеся товары в избранное.

Например:

	❤️ Торт «Медовик»
❤️ Набор капкейков «Клубника»
❤️ Торт «Красный бархат»

Это позволяет быстро вернуться к понравившемуся товару.

14. Промокоды и скидки

Администратор может создавать промокоды.

Например:

CAKE10

Скидка — 10%.

Промокод может иметь:
	•	название;
	•	размер скидки;
	•	срок действия;
	•	минимальную сумму заказа;
	•	количество использований;
	•	статус активности.

При оформлении заказа пользователь вводит промокод, а система автоматически пересчитывает стоимость.

15. Функционал сотрудника

Сотрудник кондитерской работает с поступающими заказами.

Он может:
	•	просматривать новые заказы;
	•	открывать подробности заказа;
	•	видеть данные клиента;
	•	видеть состав заказа;
	•	видеть дату и время изготовления;
	•	изменять статус заказа;
	•	подтверждать заказ;
	•	отмечать заказ как готовый;
	•	передавать заказ курьеру;
	•	отменять заказ;
	•	добавлять комментарий к заказу.

Например:

	Заказ №154
Клиент: Анна
Торт: «Красный бархат»
Вес: 2 кг
Надпись: «С днём рождения!»
Дата: 15.09.2026
Время: 18:00
Статус: В изготовлении

16. Функционал администратора

Администратор имеет максимальный уровень доступа.

Он может:

Управлять товарами
	•	добавлять товар;
	•	редактировать товар;
	•	удалять товар;
	•	менять цену;
	•	добавлять фотографии;
	•	изменять описание;
	•	изменять состав;
	•	менять доступность товара.

Управлять категориями

Например:
	•	Торты;
	•	Капкейки;
	•	Наборы;
	•	Праздничные торты;
	•	Торты на заказ.

Управлять заказами
	•	просматривать все заказы;
	•	изменять статус;
	•	отменять заказ;
	•	просматривать информацию о клиенте;
	•	просматривать оплату и доставку.

Управлять пользователями
	•	просматривать пользователей;
	•	блокировать пользователей;
	•	изменять роль.

Управлять отзывами
	•	просматривать отзывы;
	•	удалять нарушающие правила отзывы;
	•	публиковать/скрывать отзывы.

Управлять промокодами
	•	создавать;
	•	изменять;
	•	удалять;
	•	отключать промокоды.

17. Роли пользователей

В системе можно сделать три основные роли.

1. Клиент

Имеет возможность:
	•	зарегистрироваться;
	•	просматривать каталог;
	•	искать товары;
	•	добавлять товары в корзину;
	•	оформлять заказ;
	•	оплачивать заказ;
	•	отслеживать заказ;
	•	просматривать историю заказов;
	•	оставлять отзывы;
	•	добавлять товары в избранное.

2. Сотрудник

Имеет возможность:
	•	просматривать заказы;
	•	обрабатывать заказы;
	•	изменять статусы;
	•	просматривать информацию о клиентах;
	•	контролировать процесс изготовления;
	•	отмечать заказ готовым.

3. Администратор

Имеет полный доступ:
	•	управление пользователями;
	•	управление товарами;
	•	управление категориями;
	•	управление заказами;
	•	управление отзывами;
	•	управление промокодами;
	•	управление сотрудниками;
	•	просмотр статистики.

18. База данных

Для сайта можно использовать реляционную базу данных, например MySQL или PostgreSQL.

Я бы предложил следующую структуру.

Таблица users — пользователи

Поле	Тип	Описание
id	INT	ID пользователя
name	VARCHAR	Имя
email	VARCHAR	Email
phone	VARCHAR	Телефон
password	VARCHAR	Пароль/хеш пароля
role_id	INT	Роль пользователя
created_at	DATETIME	Дата регистрации
status	VARCHAR	Статус аккаунта

Таблица roles — роли

Поле	Тип	Описание
id	INT	ID роли
name	VARCHAR	Название роли

Пример:

id	name
1	Клиент
2	Сотрудник
3	Администратор

19. Таблица categories — категории

Поле	Тип	Описание
id	INT	ID категории
name	VARCHAR	Название
description	TEXT	Описание

Примеры:
	•	Торты
	•	Капкейки
	•	Наборы капкейков
	•	Праздничные торты

20. Таблица products — товары

Поле	Тип	Описание
id	INT	ID товара
category_id	INT	Категория
name	VARCHAR	Название
description	TEXT	Описание
price	DECIMAL	Цена
weight	DECIMAL	Вес
servings	INT	Количество порций
image	VARCHAR	Изображение
available	BOOLEAN	Доступность

21. Таблица ingredients — ингредиенты

Поле	Тип	Описание
id	INT	ID ингредиента
name	VARCHAR	Название
description	TEXT	Описание
allergen	BOOLEAN	Является ли аллергеном

Например:
	•	мука;
	•	сахар;
	•	яйца;
	•	молоко;
	•	сливки;
	•	шоколад;
	•	клубника;
	•	орехи.

22. Таблица product_ingredients

Она нужна, чтобы связать товары и ингредиенты.

Поле	Тип
product_id	INT
ingredient_id	INT
amount	DECIMAL

Например:

Торт «Красный бархат»:
	•	мука — 300 г;
	•	сахар — 200 г;
	•	яйца — 4 шт.;
	•	сливочный сыр — 400 г.

Связь здесь многие-ко-многим: один товар содержит много ингредиентов, а один ингредиент может входить в состав разных товаров.

23. Таблица orders — заказы

Поле	Тип	Описание
id	INT	Номер заказа
user_id	INT	Клиент
status_id	INT	Статус
total_price	DECIMAL	Итоговая стоимость
order_date	DATETIME	Дата оформления
pickup_date	DATE	Дата получения
pickup_time	TIME	Время получения
comment	TEXT	Комментарий клиента

24. Таблица order_items — состав заказа

Поле	Тип	Описание
id	INT	ID позиции
order_id	INT	Заказ
product_id	INT	Товар
quantity	INT	Количество
price	DECIMAL	Цена на момент заказа
customization	TEXT	Индивидуальные параметры

Например:

order_id	product_id	quantity	customization
125	4	1	«Надпись: С днём рождения Аня»
125	8	6	«Розовое оформление»

25. Таблица order_statuses

id	name
1	Новый
2	Принят
3	В изготовлении
4	Готов
5	Передан курьеру
6	Доставлен
7	Завершён
8	Отменён

26. Таблица payments — оплаты

Поле	Тип	Описание
id	INT	ID оплаты
order_id	INT	Заказ
amount	DECIMAL	Сумма
method	VARCHAR	Способ оплаты
status	VARCHAR	Статус
transaction_id	VARCHAR	Номер транзакции
paid_at	DATETIME	Дата оплаты

27. Таблица delivery — доставка

Поле	Тип	Описание
id	INT	ID доставки
order_id	INT	Заказ
type	VARCHAR	Доставка/самовывоз
address	TEXT	Адрес
delivery_price	DECIMAL	Стоимость доставки
courier_id	INT	Курьер
status	VARCHAR	Статус доставки

28. Таблица reviews — отзывы

Поле	Тип	Описание
id	INT	ID отзыва
user_id	INT	Автор
product_id	INT	Товар
rating	INT	Оценка 1–5
text	TEXT	Текст
created_at	DATETIME	Дата
status	VARCHAR	Статус модерации

29. Таблица favorites — избранное

Поле	Тип
id	INT
user_id	INT
product_id	INT
created_at	DATETIME

30. Таблица promo_codes

Поле	Тип	Описание
id	INT	ID
code	VARCHAR	Промокод
discount	DECIMAL	Размер скидки
discount_type	VARCHAR	Процент/фиксированная сумма
min_order_price	DECIMAL	Минимальная сумма заказа
valid_from	DATETIME	Начало действия
valid_until	DATETIME	Конец действия
usage_limit	INT	Лимит использований
active	BOOLEAN	Активен ли

31. Связи между таблицами

Основные связи будут выглядеть примерно так:

ROLES
  │
  └──── USERS
          │
          ├──── ORDERS
          │       │
          │       ├──── ORDER_ITEMS ──── PRODUCTS
          │       │                         │
          │       │                         ├──── CATEGORIES
          │       │                         │
          │       │                         └──── PRODUCT_INGREDIENTS ──── INGREDIENTS
          │       │
          │       ├──── PAYMENTS
          │       │
          │       └──── DELIVERY
          │
          ├──── REVIEWS ───── PRODUCTS
          │
          └──── FAVORITES ─── PRODUCTS

32. Основные связи в БД

Один пользователь → много заказов

users 1 : N orders

Один заказ → много товаров

Через order_items:

orders 1 : N order_items
products 1 : N order_items

Получается:

orders N : M products

Один товар → одна категория

categories 1 : N products

Один товар → много ингредиентов

products N : M ingredients

через product_ingredients.

Один пользователь → много отзывов

users 1 : N reviews

Один товар → много отзывов

products 1 : N reviews

Один заказ → одна оплата

orders 1 : 1 payments

Один заказ → одна доставка

orders 1 : 1 delivery

33. Итоговая структура системы

В итоге сайт можно разделить на несколько основных частей:

                 САЙТ КОНДИТЕРСКОЙ
                         │
       ┌─────────────────┼─────────────────┐
       │                 │                 │
    Клиент           Сотрудник       Администратор
       │                 │                 │
       ▼                 ▼                 ▼
   Каталог          Заказы             Товары
   Корзина          Статусы             Категории
   Заказ            Изготовление        Пользователи
   Оплата           Доставка            Отзывы
   Доставка                             Промокоды
   Отзывы                                Статистика
   Личный кабинет
       │
       ▼
                 БАЗА ДАННЫХ
                       │
       ┌───────────────┼────────────────┐
       ▼               ▼                ▼
    USERS           PRODUCTS          ORDERS
       │               │                │
       │               │                ├── ORDER_ITEMS
       │               │                ├── PAYMENTS
       │               │                └── DELIVERY
       │               │
       ├── REVIEWS     ├── CATEGORIES
       │               └── INGREDIENTS
       │
       └── FAVORITES

Если это нужно именно для учебного проекта

Я бы не усложнял систему реальным складским учётом ингредиентов, если преподаватель не требует именно производственную систему. Для сайта заказа тортов достаточно примерно 13 таблиц:
	1.	users
	2.	roles
	3.	categories
	4.	products
	5.	ingredients
	6.	product_ingredients
	7.	orders
	8.	order_items
	9.	order_statuses
	10.	payments
	11.	delivery
	12.	reviews
	13.	favorites
	14.	promo_codes

То есть получится вполне полноценная информационная система, а не просто интернет-магазин: клиент → выбор торта → индивидуализация → корзина → заказ → оплата → изготовление → доставка → отзыв.