Jump to content
Sign in to follow this  
Marcio Katsumi Marques

modelagem correta.

Recommended Posts

Supondo que eu tenha uma tabela de "alunos" com muitos campos (EX: nome, ra, rg, cpf, telefone, endereco, numero, bairro, cep, pai, mae e etc..) o modo correto seria separar os campos em tabelas mais especificas como 'dados' e 'endereço', ou pode se deixar em uma tabela só?

 

Queria saber se as pesquisas feitas com uma única tabela com muitos campos é mais eficiente do que em tabelas 'desmembradas'.

 

De quebra, se alguem souber como funciona essa mesma questão no Doctrine ou ainda no Hibernate seria bem legal tambem. :D

Share this post


Link to post
Share on other sites

Em ER siga as Formas Normais , no caso se "endereço" é único fica na mesma tabela (minha opinião) se tenho diversos (comercial,residencial etc0 se quebra em tabelas

 

Uma questão que Modelagem não tem O modelo certo, tem o que melhor se aplica

Share this post


Link to post
Share on other sites

No caso de um projeto que trabalho a tabela 'aluno' tem 41 campos, sendo que até uns 12 deles eu poderia colocar em um tabela endereço.

 

Minha dúvida é quão otimizado é fazer essa separação.

 

Nesse projeto, a cada ano vou ter umas 1500 inserções de alunos e muita coisa envolve consultar a tabela 'aluno' só para pegar o nome e id.

 

Para um caso assim, você ainda colocaria tudo em uma única tabela?

Share this post


Link to post
Share on other sites

Eu só separaria endereço se tivesse de ter mais de um, num modelo ER em um modelo OO seriam outros 500.

Share this post


Link to post
Share on other sites

Qual a opnião de voces em relação a uma estrutura de dados modelo relacional normalizado MRN?

 

 

Sobre criação das tabelas ou um tabelão, ao invés de criar uma tabela apenas: alunos ( [pk] id_aluno, nome, genero, email, tel_res, tel_com, tel_cel, status)

 

Criar várias assim:

 

genero ( [pk] id_genero, desc_genero)

contato( [pk] id_telefone, tel_res, tel_com, tel_cel)

status ( [pk] id_status, desc_status)

 

obs o email não entra na tabela contato porque ele tem uma certa ligação com o id_aluno, pois nesse caso que exemplifico, será permitido apenas um email por aluno, podendo ser usado como login por exemplo.

 

pelo que tenho estudado o melhor mesmo é criar tabelas sem dó e relacionar elas de forma correta.

 

se um campo nao tem nada a ver com o id_aluno não adinta deixar ele na tabela alunos.

 

Por fim criar a tabela aluno com as chaves estrangeiras vindas das outras tabelas e criar as chaves estrangeiras nas outras tabelas que se relacionarem com a tabela alunos.

 

 

O que acham? o principal é nao acumular trabalho desnecessário pro futuro, o negócio é saber o melhor caminho.

  • +1 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Luciano Marques
      Então pessoal é o seguinte: Estou tendo problemas para impedir acesso simultâneo no meu projeto. Foi depois de muito pesquisar que vim aqui abrir esse tópico. 
      Enfim, eu até consegui colocar uma teoria em prática que era a de criar uma coluna na tabela `usuarios` com 1 para ativo, e 2 para  inativo. e depois coloquei no topo a condição IF para se 1 já preenchido não permite o login. até ai de boa. o problema vem se o usuário não desloga só fecha a janela. a coluna ainda permanece como ativa 1. mesmo expirando o login, não ocorre o update na base de dados. Se alguém puder me ajudar nessa, preciso concluir esse trabalho ainda essa semana. desde já agradeço 
    • By drx
      Olá Pessoal!
       
      Eu estou tentando instalar o sgbd navicat para acessar meu banco de dados, porém sem sucesso. 
      Pergunta: Para usar o sgbd navicat é necessário instalar o mysqlserver  ou o navicat já traz no pacote dele ao instalar?
      Aguardo.
       
    • By renzogr
      Olá Masters
       
      Estou precisando incluir uma string num campo de uma tabela mysql.
      É o seguinte:
      Tenho um campo contendo instruções de uma receita culinária e preciso colocar a string "-- " (sem aspas) no início de cada linha do campo das instruções.
      Já tentei o 
      UPDATE tabela SET variavel = concat("-- ", variavel); mas ele só altera a primeira linha...  Preciso encontrar as demais linhas dentro do campo e colocar a string na frente.
       
      Alguém tem uma ideia de como fazer ?
       
    • By mayko@123
      TENHO O SEGUINTE SELECT :   select loja,NOME,PREÇO from produtos  GROUP BY NOME,LOJA order by NOME,PREÇO ASC ;
      E O RETORNO É : 
       
      LOJA             NOME                            PREÇO
      A banana prata 1,98 C                  banana prata 1,99 B          COCO VERDE 1 123   COCO VERDE 1 C  COCO VERDE 1 C   laranja pera rio 0,49 A       laranja pera rio 1,99 123 laranja pera rio 1211 B LARANJA SERRA DAGUA 1,99 C LARANJA SERRA DAGUA 2,99 B maca fuji 2,50 C maca fuji 2,97 A maca fuji 2,99 B MAMAO 1,97 C MAMAO 2,10 123 PESSEGO 12 C PESSEGO 2,30 A PESSEGO 234 C UVA 1212 123 UVA 212 A UVA 3,25  
      QUERIA QUE ME RETORNASSE APENAS O PRIMEIRO PRODUTO,PREÇO DE CADA LOJA POR EXEMPLO : A LOJA 'A'  VENDEU A BANANA MAIS BARATA, A LOJA 'B' VENDEU O COCO VERDE MAIS BARATO A LOJA 'C' A LARANJA..... e assim por diante , senão o retorno vai ficar muito extenso pois vai ser muitas lojas e produtos.
    • By lordstarlight
      Olá pessoal,
       
      Tenho uma base de dados onde há um campo decimal que guarda um valor tipo (10.20).
      Quanto tento retornar o valor multiplicado por quantidade (10.2 * 2) retorna apenas 20,00
       
      $subTotal = $qtdeItem * $precoProduto;
      echo  'R$ '.number_format($subTotal,2,",",".");?><br>
       
      Como faço para retornar 20,40 ?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.