Monalisa
Modelo de dados

Product Catalog

Catálogo global de produtos, a oferta de cada IF e a habilitação por vínculo CNPJ × IF.

O catálogo é global: grupos de produto (opcionais), produtos e tipos de operação. Cada IF oferta produtos (financial_institution_products), e cada vínculo CNPJ × IF habilita algumas dessas ofertas (financial_institution_account_products). As FKs compostas garantem que a oferta habilitada é da mesma IF do vínculo e que o tenant é o do vínculo.

O seeder de referência carrega o catálogo inicial a cada deploy (ver Seeders).

Tabelas (5)

TabelaPara quê
product_groupsAgrupamento opcional de produtos.
productsProduto do catálogo global, com grupo opcional.
operation_typesTipos de operação, catálogo independente com código único.
financial_institution_productsOferta de um produto por uma IF; única por (IF, produto).
financial_institution_account_productsHabilitação de uma oferta para um vínculo CNPJ × IF; única por (vínculo, oferta).

Referência

product_groups

Agrupamento opcional de produtos.

ColunaTipoNuloObservação
idbigintnãoidentity (GENERATED ALWAYS)
nametextnão
disabled_attimestamptzsim
created_attimestamptznãopadrão clock_timestamp()
updated_attimestamptznãopadrão clock_timestamp()

Chaves estrangeiras

  • nenhuma

Referenciada por: products.

Garantido pelo banco

TipoNomeDefinição
PKproduct_groups_pkeyPRIMARY KEY (id)

Fora do banco

  • Nenhuma regra registrada além das constraints acima.

products

Produto do catálogo global, com grupo opcional.

ColunaTipoNuloObservação
idbigintnãoidentity (GENERATED ALWAYS)
product_group_idbigintsim
nametextnão
disabled_attimestamptzsim
created_attimestamptznãopadrão clock_timestamp()
updated_attimestamptznãopadrão clock_timestamp()

Chaves estrangeiras

  • product_group_id → product_groups.id

Referenciada por: financial_institution_products.

Garantido pelo banco

TipoNomeDefinição
PKproducts_pkeyPRIMARY KEY (id)

Fora do banco

  • Nenhuma regra registrada além das constraints acima.

operation_types

Tipos de operação, catálogo independente com código único.

ColunaTipoNuloObservação
idbigintnãoidentity (GENERATED ALWAYS)
codetextnão
nametextnão
disabled_attimestamptzsim
created_attimestamptznãopadrão clock_timestamp()
updated_attimestamptznãopadrão clock_timestamp()

Chaves estrangeiras

  • nenhuma

Garantido pelo banco

TipoNomeDefinição
PKoperation_types_pkeyPRIMARY KEY (id)
UNIQUEoperation_types_code_uniqueUNIQUE (code)

Fora do banco

  • Nenhuma regra registrada além das constraints acima.

financial_institution_products

Oferta de um produto por uma IF; única por (IF, produto).

ColunaTipoNuloObservação
idbigintnãoidentity (GENERATED ALWAYS)
financial_institution_idbigintnão
product_idbigintnão
disabled_attimestamptzsim
created_attimestamptznãopadrão clock_timestamp()
updated_attimestamptznãopadrão clock_timestamp()

Chaves estrangeiras

  • financial_institution_id → financial_institutions.id
  • product_id → products.id

Referenciada por: financial_institution_account_products.

Garantido pelo banco

TipoNomeDefinição
PKfinancial_institution_products_pkeyPRIMARY KEY (id)
UNIQUEfinancial_institution_products_id_institution_keyUNIQUE (id, financial_institution_id)
UNIQUEfinancial_institution_products_institution_product_keyUNIQUE (financial_institution_id, product_id)

Fora do banco

  • Nenhuma regra registrada além das constraints acima.

financial_institution_account_products

Habilitação de uma oferta para um vínculo CNPJ × IF; única por (vínculo, oferta).

ColunaTipoNuloObservação
idbigintnãoidentity (GENERATED ALWAYS)
tenant_idbigintnão
financial_institution_account_idbigintnão
financial_institution_idbigintnão
financial_institution_product_idbigintnão
disabled_attimestamptzsim
created_attimestamptznãopadrão clock_timestamp()
updated_attimestamptznãopadrão clock_timestamp()

Chaves estrangeiras

  • (financial_institution_account_id, financial_institution_id, tenant_id) → financial_institution_accounts (id, financial_institution_id, tenant_id) (mesmo tenant)
  • (financial_institution_product_id, financial_institution_id) → financial_institution_products (id, financial_institution_id)

Garantido pelo banco

TipoNomeDefinição
PKfinancial_institution_account_products_pkeyPRIMARY KEY (id)
UNIQUEfinancial_institution_account_products_account_offer_keyUNIQUE (financial_institution_account_id, financial_institution_product_id)

Fora do banco

  • A disponibilidade efetiva (catálogo ativo, vínculos ativos e permissões) é calculada na aplicação; não há trigger para isso.
  • updated_at não se atualiza sozinho: nenhum trigger o mantém.

Nesta página