Опишите сущности и связи офлайн магазина
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Сущности офлайн магазина
Офлайн магазин — это сложная система, которую можно смоделировать через набор взаимосвязанных сущностей. Рассмотрим основные из них и их отношения.
Основные сущности
1. Магазин (Store) Это базовая сущность, которая представляет физическое помещение.
class Store:
id: UUID
name: str
address: str
city: str
phone: str
email: str
opening_hours: str
manager_id: UUID
created_at: datetime
updated_at: datetime
2. Товар (Product) Физический товар, который продаётся в магазине.
class Product:
id: UUID
name: str
description: str
category_id: UUID
sku: str
manufacturer: str
price: Decimal
cost: Decimal
barcode: str
created_at: datetime
3. Категория (Category) Организует товары по типам (одежда, электроника и т.д.).
class Category:
id: UUID
name: str
description: str
parent_category_id: UUID # для подкатегорий
4. Заказ (Order) Документ о продаже товаров клиентом.
class Order:
id: UUID
store_id: UUID
customer_id: UUID
order_number: str
order_date: datetime
total_amount: Decimal
tax_amount: Decimal
status: OrderStatus # pending, completed, cancelled
payment_method: str
cashier_id: UUID
5. Товар в заказе (OrderItem) Прямая связь между заказом и товаром.
class OrderItem:
id: UUID
order_id: UUID
product_id: UUID
quantity: int
unit_price: Decimal
discount_percent: Decimal
total_price: Decimal
6. Клиент (Customer) Лицо, которое покупает товары.
class Customer:
id: UUID
email: str
phone: str
first_name: str
last_name: str
loyalty_points: int
registered_date: datetime
7. Сотрудник (Employee) Работник магазина (кассир, менеджер, продавец).
class Employee:
id: UUID
store_id: UUID
first_name: str
last_name: str
position: str
email: str
hire_date: datetime
salary: Decimal
8. Инвентарь (Inventory) Количество товара в магазине.
class Inventory:
id: UUID
store_id: UUID
product_id: UUID
quantity: int
reorder_level: int
last_restock_date: datetime
Связи между сущностями
Store (1) ──────── (M) Employee
│
├─── (1) ──────── (M) Inventory
│
└─── (1) ──────── (M) Order
Product (1) ──────── (M) OrderItem
│
└─── (M) ──────── (1) Category
Product (1) ──────── (M) Inventory
Customer (1) ──────── (M) Order
Order (1) ──────── (M) OrderItem
Employee (1) ──────── (M) Order (как кассир)
Store (1) ──────── (1) Employee (как менеджер)
Типы отношений
- One-to-Many: Магазин → Заказы, Магазин → Сотрудники, Продукт → Заказы
- Many-to-Many: Через промежуточную таблицу OrderItem (Заказ ↔ Товар)
- Self-referencing: Категория → Родительская категория (иерархия)
Ключевые constraint-ы
- Удаление магазина должно каскадно удалять его заказы и сотрудников
- Товар нельзя удалить, если на него есть заказы (мягкое удаление)
- Количество в инвентаре не может быть отрицательным
- Email и SKU должны быть уникальны
- Цена товара должна быть больше себестоимости
Эта модель обеспечивает полную картину работы офлайн магазина, отслеживая товары, продажи, персонал и клиентов.