Перейти к основному содержимому

ERD программы лояльности

Диаграмма «сущность–связь»​

PlantUML диаграмма

Связи и бизнес-правила​

СвязьТипБизнес-правило
t.loyalty_program — t.partner1:NВ одной программе лояльности (GPB_MVP) участвует много партнёров: Газпромнефть, Gorod Pay, Шоколадница…
t.client — t.consent1:1У клиента не более одного действующего согласия на обработку данных; уникальность гарантирует ограничение UQ по client_id.
t.client — t.charge_off_operation1:NОдин клиент совершает много операций списания/отмены.
t.partner — t.charge_off_operation1:NУ каждого партнёра много операций по его клиентам.
t.client ↔ t.partner (через t.charge_off_operation)N:MКлиент покупает у многих партнёров, партнёр обслуживает многих клиентов. «Факт покупки» и есть операция — таблица-ассоциация с собственными атрибутами (сумма, тип, статус).
t.partner ↔ t.role (через t.partner_role)N:MПартнёрам-тенантам выдаются роли доступа к API (b2b-user-loyalty-system-read/write). Классическая связующая таблица с составным первичным ключом.

Как читать схему​

  • <<PK>> — первичный ключ, <<FK>> — внешний ключ, <<UQ>> — ограничение уникальности.
  • * перед полем — NOT NULL.
  • Зелёным выделены справочно-разрешительные сущности (согласия, роли), оранжевым — связующая таблица N:M.
  • Операция списания — центр схемы: она связывает клиента, партнёра и несёт финансовый факт (сумма баллов), поэтому все отчёты и метрики строятся от неё.