Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 0
joaowall

Modelagem Banco de Dados

Pergunta

Bom dia, 

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

 

Tenho uma tabela chamada "Empresa" e 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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

0 respostas a esta questão

Recommended Posts

Até agora não há respostas para essa pergunta


  • Conteúdo Similar

    • Por andreygsantos
      Pessoal, normalmente faço modelagem de banco de dados usando o CA ErWin, mas precisei utilizar a ferramenta de modelagem do MySQL Workbench 8.0 Community.
      O problema ocorre quando a ferramenta começa a "enfeitar o pavão" quando se trata de FK. Vou mostrar um exemplo básico:

      Temos aqui 3 tabelas representando condomínio, unidades e vagas. As vagas pertencem ao condomínio, assim como as unidades. As vagas podem pertencer a unidades diferentes no decorrer do tempo porque não são vagas fixas, portanto não posso pendurar vaga na unidade.
      Problema 1: FK recebe o nome da tabela origem automaticamente.
      Até aqui posso renomear o atributo ou alterar as configurações de modelagem.
       

      Atributos renomeados, temos o seguinte modelo representado acima. Agora vamos levar a PK da entidade UNIDADE para ser FK não identificação na entidade VAGA.
       

      E agora temos o Problema 2: a ferramenta não entende que o atributo CondomínioID já existe e cria novamente com o prefixo da entidade origem. Parece um problema besta e fácil de resolver apagando o atributo duplicado e mantendo apenas UnidadeID, mas ao sincronizar com o banco de dados, começam a surgir erros com índices.
      Abaixo mostro como fica a modelagem no ERWin sem qualquer interferência:
       

      Como podem ver, a modelagem fica perfeita. O ErWin entende que o atributo já existe na entidade e leva apenas o atributo que vai diferenciar para fazer o relacionamento.
       
      Vocês devem estar se perguntando por que eu não uso o ErWin então... Mas a versão do ErWin que tenho não suporta MySQL após a versão 5.x e uma licença nova dessa ferramenta vai me custar 1 rim, senão os 2... Teoricamente, o Workbench deveria fazer essa modelagem sem problemas, mas eu não conheço bem e talvez possa ser alguma configuração. Alguém teria uma luz?
      Obrigado.
       
    • Por Kellison Ruan
      Acho que não fui tão claro no título, portanto irei esmiuçar melhor aqui...
       
      É o seguinte, quero saber se há algum jeito de pegar as linhas de uma coluna q está em VARCHAR com informações do tipo "4 PONTOS DE ILUMINAÇÃO", dessa informação pretendo retirar somente o número que em questão é o "4" e colocá-lo em outra coluna INTEGER. Há essa possibilidade? Detalhe, as vezes as informações não está seguindo um padrão de vim somente como "4 PONTOS DE ILUMINAÇÃO" às vezes vêm dados com mais informações númericas que precisa distinguir, por exemplo, a mim só interessa pegar números que vem antecedendo as palavras "PONTOS", "PTOS", "PTS", têm algum jeito de distinguir isso?
    • Por Vitor Buss
      Boa tarde pessoal, estou atras de alguém que possa me ajudar com um trabalho da minha faculdade, ele não é tão complexo e estou disposto a pagar por uma pessoa que possa me ajudar a realizar este trabalho que esta dividido em 4 etapas.
       
       Etapa 1-  A empresa TechLogica tem vários empregados e precisa implementar um sistema de gerenciamento de projetos. Após várias reuniões e discussões com os responsáveis e usuários do sistema, observou-se que são necessários os dados pessoais e o salário de cada empregado.
      Cada empregado trabalha em um departamento e cada departamento pode ter vários colaboradores, sendo um deles o gerente. Cada empregado tem um supervisor e este pode supervisionar vários empregados. O empregado pode ter nenhum, um ou vários dependentes, sendo necessários os dados pessoais de cada dependente.
      Além disso, existem vários projetos na empresa, sendo preciso armazenar a data de início, participantes, etapas e atas de reuniões. Cada projeto pode ter um ou mais empregados trabalhando nele, da mesma forma que um empregado pode trabalhar em nenhum, um ou vários projetos. Cada projeto pode pertencer a um ou vários departamentos.
       Diante disso:
      Crie o MER com as entidades, relacionamentos, cardinalidades, atributos, chaves primárias e estrangeiras. Você pode fazer no caderno, editor de texto ou em uma ferramenta de case. Normalize até a 3ª forma normal.  
      Etapa 2 
      Utilizando comandos SQL (script) – utilize a interface gráfica somente para rodar os scripts nesta etapa –, crie o banco de dados, com entidades, relacionamentos, chaves primárias e estrangeiras. Insira 15 registros em cada tabela. Utilizando o comando Select, verifique todos os registros de cada tabela. Apague todos os registros de todas as tabelas. Observe a ordem correta para apagar os registros, de forma a obedecer à integridade referencial. Execute novamente os scripts para inserir os registros. O resultado desta etapa são o banco criado no SGBD e os scripts SQL utilizados para executar todos os passos.
       
      Etapa 3 
      Crie um stored procedure que receba um valor como parâmetro de input. Dentro do stored procedure dê aumento de salário, de acordo com o percentual recebido, a todos funcionários. Utilize o conceito de transação. Crie uma view que mostre o nome de todos os empregados e, para aqueles com dependentes, o nome de cada dependente. Utilizando SQL, crie o comando para mostrar: o nome do empregado com maior salário; o nome do empregado com maior salário e o valor deste; o nome do empregado e respectivo salário, ordenando do maior para o menor valor; a média de salário de empregados do gênero masculino; a média de salário de empregados do gênero feminino; o nome dos empregados que são gerentes; o nome dos empregados que trabalham em um ou mais projetos. O resultado desta etapa são os scripts SQL utilizados para executar todos os passos.
       
      Etapa 4 
      Explique de forma discursiva (com editor de texto – Word, por exemplo) quando deve ser feito o backup de um banco de dados, cuja carga de dados é feita todos os sábados. Justifique. Para o banco de dados desenvolvido nesta ATP, crie um plano de manutenção de backup obedecendo às seguintes regras: backup completo todos os domingos, backup incremental (ou diferencial) todas as quartas e backup de log de transação a cada 15 minutos. Considerando os passos anteriores, analise as queries e indique três índices que poderiam ser criados. Justifique (utilize editor de texto – Word, por exemplo).
    • Por LucasSamuel
      Olá! Sou participante do grupo em um projeto de desenvolvimento de jogos em grupo. Estamos aceitando participantes de todos os tipos de categorias de desenvolvimento de jogos ... Convido você a participar deste projeto. A ideia de criar um grupo e ganhar US $ foi tirada de um colega meu que tinha câncer e acabou morrendo com esse sonho. Até agora, temos 4 participantes que, juntos, estamos tentando reunir 20 pessoas que têm idéias como a nossa…
      O grupo está na versão beta, porque ainda precisamos conversar com todos os participantes e convocar uma reunião para decidir democraticamente sobre jogos de categoria de mecanismo, lucros, servidores ... Mas, a princípio, o dinheiro que você ganhará estará relacionado à sua porcentagem no desenvolvimento de jogos . EX: 10% do jogo que você ajudou a criar; portanto, 10% do jogo é seu. Portanto, 10% de todos os lucros do jogo serão seus.
      Você escolhe seus turnos e horários e quanto ajudará. Pedimos apenas que você tente realizar determinadas tarefas determinadas para você, caso contrário, outro desenvolvedor fará em seu lugar. NOTA: Quanto mais você contribuir para a criação do jogo, mais lucros obterá.
      O grupo não terá um chefe ou um “comandante” organizador… Pois no grupo somos todos os chefes. Portanto, as decisões são tomadas em grupos por meio de reuniões e também de votos onde colocamos nossas idéias.
      Precisamos de mais de 20 participantes para iniciar nosso projeto. Todos no início do projeto assinaram um contrato com todos os termos “legais” do grupo, que serão decididos com todos os participantes. Portanto, se você não gosta de algum aspecto do grupo, pode e deve comentar e alterar os termos ... 
      O nome da categoria de estilo de jogo ... será decidido em grupos para que cada participante apresente 1 ou mais idéias de jogo. Serão escolhidos os mais votados e os mais adequados para todos os participantes. será vendido em várias plataformas ... android, PC ... em muitas lojas online diferentes ... será vendido acima de 5US $ e abaixo de 30US $
      Diga o que você pensa se quiser saber mais ou ligue para mim no whatsapp: +55 51 993700013 
      Vamos apresentar a todos os participantes do nosso grupo e aplicá-lo ao nosso grupo, discutir, conversar, criar, testar, aplicar e vir com idéias para o grupo com você.
    • Por devenr
      Estou com dificuldade na criação de uma procedure que receba três valores numéricos e insira um registro na tabela abaixo:
       
       
      TB_MAIORES NUMERO1 Primeiro valor NUMERO2 Segundo valor NUMERO3 Terceiro valor MAIOR Maior valor entre (NUMERO1, NUMERO2 e NUMERO3)
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.