t.loyalty_program — t.partner | 1:N | В одной программе лояльности (GPB_MVP) участвует много партнёров: Газпромнефть, Gorod Pay, Шоколадница… |
t.client — t.consent | 1:1 | У клиента не более одного действующего согласия на обработку данных; уникальность гарантирует ограничение UQ по client_id. |
t.client — t.charge_off_operation | 1:N | Один клиент совершает много операций списания/отмены. |
t.partner — t.charge_off_operation | 1: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). Классическая связующая таблица с составным первичным ключом. |