5. Подсистема ведения товаров (Products и связанные сущности)

5.1. Диаграмма

_images/products_md2.svg

На этой схеме представлена часть БД для хранения информации о продуктах, которыми торгуют на площадке.

Продавец (SELLER) предоставляет свой товар (PRODUCT) для продажи на торговой платформе (MARKETPLACE).

Данные о товарах хранятся в таблице PRODUCTS. В таблице GOODS для каждого товара сохраняются общие характеристики: название, описание и набор произвольных атрибутов (цвет, размер и т.п.). Все атрибуты товара можно запросить в представлении GOODS_ATTRIBUTES. В таблице PRODUCTS — конкретные предложения товара (цена, скидки и т.п.). Каждому товару и предложению назначаются уникальные идентификаторы в момент добавления в БД.

Предложение товара принадлежит продавцу SELLER. Про продавца сохраняется вся контактная информация. Для товара могут храниться различные медиа-материалы (картинки, чертежи, звуковые описания, рекламные ролики). Ссылки на такие материалы сохраняются в таблице MEDIA и связываются с нужным товаром в таблице PRODUCT_MEDIA.

Запасы продуктов хранятся на складе - WAREHOUSE (один продукт может храниться партиями на нескольких складах). Запись в таблице WAREHOUSE_STOCK соответствует одной партии данного товара на указанном складе в наличествующем количестве (запас на складе). Про каждый склад известен его адрес и максимальная емкость. При добавлении товара на конкретный склад специальным триггером CHECK_WAREHOUSE_CAPACITY проверяется, не превысит ли новое количество максимально допустимое.

В системе предусмотрена возможность оставлять отзывы о товаре в таблице REVIEWS. Покупатели из CUSTOMERS могут добавить отзывы и указать свою оценку этого товара (REVIEW.RATING)

Список товаров, продающихся со значительными скидками (распродажа), можно получить с помощью представления SELLOUT

Вот полный список объектов базы данных, относящихся исключительно к работе с товарами (без заказов и покупателей):

5.1.1. ТАБЛИЦЫ

Основные таблицы товаров

  1. GOODS - Основные характеристики товаров (название, описание, атрибуты)

  2. PRODUCTS - Конкретные предложения товаров от продавцов

  3. SELLERS - Продавцы

Склады и запасы

  1. WAREHOUSE_STOCK - Запасы товаров на конкретных складах

  2. WAREHOUSES - Информация о складах

Медиафайлы

  1. MEDIA - Медиафайлы (изображения, видео)

  2. PRODUCTS_MEDIA - Связь товаров с медиафайлами

5.1.2. ПРЕДСТАВЛЕНИЯ (VIEWS)

  1. GOODS_ATTRIBUTES - Показ JSON атрибутов товаров

  2. SELLOUT - Товары со скидкой \(\ge\) 75%

  3. TOPCAPS - Анализ загрузки складов (включает товарные остатки)

  4. CATEGORY_OF_GOODS - категории товаров (у кого присутствует такой атрибут)

5.1.3. ФУНКЦИИ

Создание и управление товарами

  1. CREATE_PRODUCT - Создание продукта с JSON-описанием

Информация о товарах

  1. CALCULATE_REVENUE - Расчет выручки продавца за период (косвенно через товары)

  2. ATTR_GET_STRING – показывает значение названного атрибута для указанного по ID товара

5.1.4. ХРАНИМЫЕ ПРОЦЕДУРЫ

Управление товарами

  1. ADD_PRODUCT_MEDIA - Добавление медиафайлов к товару

  2. ADD_PRODUCT_MEDIA_STAT - Добавление медиафайлов с возвратом статистики

  3. UPDATE_PRODUCT_INFO - Обновление информации о продукте через JSON

  4. DEL_PRODUCT_FROM_WAREHOUSE - Удаление товара со склада (основная версия)

Информационные

  1. GET_PRODUCT_INFO - Получение полной информации о товаре

  2. GET_AVERAGE_PRODUCT_RATING - Получение средней оценки товара

5.1.5. ТРИГГЕРЫ

  1. CHECK_ATTRIBUTES_VALUES - Валидация JSON атрибутов при вставке/обновлении в GOODS

  2. CHECK_WAREHOUSE_CAPACITY - Проверка вместимости склада перед добавлением товара

  3. UPDATE_STOCK_TRIGGER - Обновление общего количества товара на складе

5.1.6. ИСКЛЮЧЕНИЯ (EXCEPTIONS)

  1. EXC_INVALID_QUANTITY - Недопустимое количество товара

  2. EXC_INVALID_JSON - Недопустимый формат JSON (используется в работе с атрибутами товаров)

  3. EXC_INVALID_ATTRIBUTES - Недопустимый список атрибутов товара

  4. EXC_WAREHOUSE_CAPACITY_EXCEEDED - Недостаточно товаров на складе / превышена вместимость

  5. EXC_ILLEGAL_GOODS_ID - Товар с указанным ID отсутствует в БД

  6. EXC_INVALID_WAREHOUSE_PRODUCT - Товар отсутствует на складе

  7. EXC_INSUFFICIENT_STOCK - Недостаточно товара на складе

  8. EXC_DUPLICATE_PRODUCT_ON_WAREHOUSE - Товар с этого склада уже заказан

  9. EXC_INVALID_WAREHOUSE - Недопустимый склад

5.1.7. ИНДЕКСЫ

  1. IDX_DISCOUNTED_PRODUCTS - Частичный индекс для товаров со скидкой

  2. IDX_POSITIVE_STOCK_QUANTITY - Частичный индекс для положительных остатков на складе

5.1.8. СВЯЗИ МЕЖДУ ОБЪЕКТАМИ ТОВАРОВ

Основные связи

  • PRODUCTS.GOODS_ID \(\to\) GOODS.GOODS_ID (FK_PRODUCT_GOODS1)

  • PRODUCTS.SELLER_ID \(\to\) SELLERS.SELLER_ID (FK_PRODUCT_SELLER)

  • PRODUCTS_MEDIAS.PRODUCT_ID \(\to\) PRODUCTS.PRODUCT_ID (FK_PRODUCT_MEDIA_PRODUCT)

  • PRODUCTS_MEDIAS.MEDIA_ID \(\to\) MEDIA.MEDIA_ID (FK_PRODUCT_MEDIA_MEDIA)

  • WAREHOUSE_STOCK.PRODUCT_ID \(\to\) PRODUCTS.PRODUCT_ID (FK_STOCK_PRODUCT)

  • WAREHOUSE_STOCK.WAREHOUSE_ID \(\to\) WAREHOUSES.WAREHOUSE_ID (FK_STOCK_WAREHOUSE)

Поток данных

GOODS (основные характеристики)

\(\downarrow\)

PRODUCTS (конкретные предложения) \(\to\) PRODUCTS_MEDIA (фото/видео) \(\to\) MEDIA (файлы)

\(\downarrow\)

WAREHOUSE_STOCK (наличие на складах) \(\to\) WAREHOUSES (информация о складах)

5.1.9. КЛЮЧЕВЫЕ БИЗНЕС-ПРОЦЕССЫ ДЛЯ ТОВАРОВ

  1. Создание товара \(\to\) CREATE_PRODUCT() \(\to\) GOODS + PRODUCTS + WAREHOUSE_STOCK

  2. Добавление изображений \(\to\) ADD_PRODUCT_MEDIA() \(\to\) MEDIA + PRODUCTS_MEDIA

  3. Управление остатками \(\to\) DEL_PRODUCT_FROM_WAREHOUSE() \(\to\) WAREHOUSE_STOCK

  4. Получение информации \(\to\) GET_PRODUCT_INFO() ← PRODUCTS + GOODS + SELLERS

  5. Анализ скидок \(\to\) Представление SELLOUT ← PRODUCTS + GOODS

Все эти объекты полностью независимы от заказов и покупателей и могут использоваться для:

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

  • Контроля складских остатков

  • Работы с медиаконтентом товаров

  • Анализа товарной матрицы

  • Управления ценами и скидками