1
resposta

[Dúvida] Utilização de Schemas

Bom dia!

Estou trabalhando em um projeto onde iremos cadastrar empregados em empresas diferentes. As empresas possuem cargos, sindicatos, etc. distintos. Optamos pelo Postgre.

Estamos estudando 02 opção:

1ª)- criar tabelas separadas por empresas (tabela de empregados, sindicatos, cargos, etc) utilizando SCHEMAS ou 2ª)- trabalhar com tabela única utilizando os ID por empresas.

Duvida 1- Qual a melhor opção?

Duvida 2- Caso a melhor opção seja a 1 (schemas):

Ao criarmos determinado procedimentos, uma view por exemplo, temos que criar para cada empresa (já que estamos trabalhando com tabelas diferentes por empresa)? ou temos outra solução?

Duvida 3- Caso a melhor opção seja a 2 (tabela única):

Em um website, como o sistema trabalha o isolamento. Exemplo: quero verificar a relação de empregados da empresa locada. Como o sistema irá selecionar (WHERE) os dados da empresa logada, corretamente (isolamento) em uma view, por exemplo?

1 resposta

Oii Jaeder, tudo bem?

Desculpe por demorar a te responder.

1- A escolha entre utilizar tabelas separadas por empresas ou uma tabela única com IDs por empresas depende do seu projeto e do que você pretende alcançar. Utilizar tabelas separadas pode ser interessante se as empresas possuem muitas diferenças entre si e você precisa de maior flexibilidade para alterar as estruturas de cada tabela. Por outro lado, utilizar uma tabela única pode ser mais simples e prático se as empresas possuem muitas semelhanças entre si e você precisa de uma estrutura mais padronizada.

2- Caso você opte por utilizar schemas, não é necessário criar uma view para cada empresa. Você pode criar uma única view que utilize os dados das tabelas separadas por schema e filtrar as informações de acordo com a empresa logada. Isso pode ser feito utilizando variáveis de sessão ou parâmetros na consulta SQL.

3- Se você optar por utilizar uma tabela única com IDs por empresas, é possível utilizar o isolamento de dados através de filtros na consulta SQL. Por exemplo, você pode incluir uma coluna "empresa_id" e filtrar os dados de acordo com a empresa utilizando a cláusula WHERE.

A decisão deve ser tomada conforme as necessidades e objetivos do negócio.

Espero que dê tudo certo. Abraços.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software