Modelagem Banco de Dados

07/11/2017

1

Bom dia pessoal,

Estou desenvolvendo um sistema e estou com uma dúvida na modelagem.

Tenho uma tabela chamada "Empresa" e eu preciso armazenar X parâmetros diferentes para cada empresa. Futuramente pode ser que mais parâmetros sejam adicionados.

Se criar uma tabela somente com os parametros, ela vai ficar com vários campos. Já se criar uma tabela associativa, terei perda de performance.

Qual é a melhor forma de modelar?

A)

----EMPRESA----
#id (integer)
nome (varchar)
cnpj (varchar)
...

----PARAMETROS----
#id (integer)
@empresas_id
param1 (integer)
param2 (double)
param3 (varchar)
param4 (boolean)
param5 (boolean)
...

B)

----EMPRESA----
#id (integer)
nome (varchar)
cnpj (varchar)
...

----PARAMETROS----
#id (integer)
nome (varchar)


----EMPRESA_PARAMETROS----
#@empresas_id
#@parametros_id
valor (varchar) ->armazena um valor para cada parametro


C) Outra. Qual?
Responder

Post mais votado

07/11/2017

Obrigado pelo retorno Alekym, eu pensei nessa possibilidade.. Porém, esqueci de mencionar que todas empresas precisam ter os mesmos parâmetros.. O que muda são os valores dos parametros.

Nesse caso eu não consigo garantir que todas tenham os mesmos parâmetros
Responder

Mais Posts

07/11/2017

Alex William

Eu acho que uma possibilidade seria assim:

B)
----EMPRESA----
#id (integer)
nome (varchar)
cnpj (varchar)
...
----PARAMETROS----
#id (integer)
@empresa_id
nome (varchar)
valor (varchar) ->armazena um valor para cada parametro
flagHabilitado->armazena se o parametro esta habilitado, é bom pra que quando se exclua um parametro, ele não suma da tabela de vez, só desabilita ele do sistema.

Espero ter ajudado. :D
Responder

07/11/2017

Alex William

Obrigado pelo retorno Alekym, eu pensei nessa possibilidade.. Porém, esqueci de mencionar que todas empresas precisam ter os mesmos parâmetros.. O que muda são os valores dos parametros.

Nesse caso eu não consigo garantir que todas tenham os mesmos parâmetros



Então acho que a tua opção B, de separar em 3 tabelas ficaria melhor. Mas acho que mesmo assim, adicionar a flag de habilitado ou não seria interessante:

param3 (varchar)
param4 (boolean)
param5 (boolean)
...
B)
----EMPRESA----
#id (integer)
nome (varchar)
cnpj (varchar)
...
----PARAMETROS----
#id (integer)
nome (varchar)
flagHabilitado

----EMPRESA_PARAMETROS----
#@empresas_id
#@parametros_id
valor (varchar) ->armazena um valor para cada parametro

Porque seria interessante manter essa flag no parametro, porque apesar de todas as empresas terem os mesmos parametros, pode haver empresas que não usem um determinado parametro, então ela desabilita e esse parametro deixa de ser usado.

Utilizei esse tipo de função para habilitar/desabilitar campos em formularios em um sistema que eu desenvolvi. Duas empresas usavam o mesmo codigo, mas com parametros e campos diferentes então o formulario era igual em termos de codigo, mas visualmente era diferente.
Responder

07/11/2017

Alex William

Nossa saiu tudo sem formatação

malz ai
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira