Estou usando o PostgreSQL e projetando um esquema de banco de dados relacional para um aplicativo onde desejo armazenar dados definidos pelo sistema (integrados) e dados definidos pelo usuário (personalizados) em várias tabelas, por exemplo:
Categorias de produtos
eu ia | nome | organização_id |
---|---|---|
0 | Vegetais | 068fd6a5-1c93-493f-9ffc-93a52de02aa8 |
1 | Laticínio | 068fd6a5-1c93-493f-9ffc-93a52de02aa8 |
Os dados definidos pelo sistema são pré-preenchidos e devem ser imutáveis pelos usuários, enquanto os dados definidos pelo usuário podem ser criados, modificados e excluídos pelos usuários. Preciso ser capaz de consultar dados do sistema e do usuário separadamente e gostaria que os clientes permanecessem burros.
Eu considerei as seguintes abordagens:
- Adicione uma coluna booleana (por exemplo,
is_system
) para indicar se os dados são definidos pelo sistema ou pelo usuário, mas como uma porcentagem incrivelmente baixa de registros será definida pelo sistema, não tenho certeza se isso é uma boa ideia. - Use tabelas separadas para dados definidos pelo sistema e dados definidos pelo usuário, mesmo que a estrutura seja quase idêntica. Isso parece errado para mim, pois os dados são essencialmente os mesmos.
- Adicione uma organização “de propriedade do sistema” e identifique os dados definidos pelo sistema usando seu ID. Os clientes precisariam ser menos burros, porque agora têm um ID para lembrar se quiserem consultar dados do sistema.
Qual abordagem é geralmente recomendada? Existem outras estratégias que devo considerar?
Obrigado por seus insights.