Modelagem Banco de Dados
07/11/2017
0
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?
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?
João
Curtir tópico
+ 0
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
Nesse caso eu não consigo garantir que todas tenham os mesmos parâmetros
João
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
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
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
Clique aqui para fazer login e interagir na Comunidade :)