Skip to content

IrinaDemyanenko/db_schema

Repository files navigation

Схема БД для интернет-магазина.

Разработка выполнялась в соответствии с техническим заданием, описанным в файле technical_specification.docx.

Стек технологий: SQL, PostgreSQL, dbdiagram.io

Business Context

Проект моделирует структуру данных интернет-магазина с поддержкой категорий любого уровня вложенности, системой заказов и мягким удалением данных. Схема предназначена для использования в e-commerce платформах и аналитических системах.

Особенности задачи:

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

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

  • categories — дерево категорий с parent_id и флагом is_deleted
  • category_closure — таблица связей предок-потомок для навигации по дереву
  • products — товары, связанные с категориями
  • customers — покупатели
  • orders — заказы, имеют статус (cart_order/placed/paid/shipped/cancelled')
  • order_items — состав заказа (товары и количество)

Важные детали в реализации схемы:

1). При размещении заказа status = placed, количество товара уменьшается. При отмене status = cancelled — возвращается к прежней величине. Это должно выполняться в транзакции на уровне приложения.

2). Удаление категорий пока запрещено, чтобы сохранить целостность дерева. Но учитывая, что удалять категории всё же нужно, есть флаг is_deleted = false, который можно поменять на true, и категория перестанет быть активной.

3). Работа с деревом - вставка, удаление и перемещение категорий:

  • в таблице categories есть поле parent_id, которое указывает на прямого предка, такое решение упрощает процесс вставки и перемещения новой категории;
  • category_closure хранит все возможные пары предок-потомок и упрощает навигацию по дереву;
  • при добавлении категории вставляются строки: • (id, id, 0) • (предок, id, depth_ancestor + 1) Это можно реализовать через триггер или на уровне приложения. 4).В таблицах products, customers, orders, order_items есть возможность мягкого удаления, с помощью флага is_deleted. Так сохраняется структура и не нарушаются внешние ключи.

Как открыть проект

Импортируй SQL-файл schema.sql в свою базу.

About

Проект моделирует структуру данных интернет-магазина с поддержкой категорий любого уровня вложенности, системой заказов и мягким удалением данных. Схема предназначена для использования в e-commerce платформах и аналитических системах. Стек технологий: SQL, PostgreSQL, dbdiagram.io

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors