Ir para conteúdo

Arquivado

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

apollyon

Conselhos para melhor modelagem

Recommended Posts

Boa noite a todos.

Estou aprendendo modelagem de dados e eu queria algumas dicas como melhor modelar, seguindo o exemplo

da imagem abaixo. As tabelas cliente e fornecedor, ambas podem ser tanto jurídicas como físicas. A modelagem abaixo, estaria correta, poderia usar assim ou tem outra forma de fazer, eu pensei em colocar todos os campos jurídica ou física em uma mesma tabela, porem, ficaria muito campo em branco ou se utilizasse isso campo "nome" para "razão social" também acho que ficaria confuso...

Desde já agradeço as dicas de todos.

modelagem.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, visto que sua intenção é aprender, vou te guiar por um caminho mais adequado em vez de resolver o problema para você.

 

Vamos analisar alguns problemas da sua interpretação:

  • Duas tabelas (cliente|fornecedor) que possuem exatamente os mesmos campos, sendo a única diferença o ID;
  • Chaves estrangeiras indexadas em duas tabelas (cliente|fornecedor) que vão, invariavelmente, gerar inconsistência em sua base de dados;
  • Existe um "buraco" na abstração das entidades cliente e fornecedor;

Agora às perguntas:

  • Tanto um cliente quanto um fornecedor podem ser pessoa jurídica e/ou física. Se um destes for cliente e fornecedor, ao mesmo tempo, você terá dados repetidos na base de dados?
  • Para a manipulação dos endereços, você permitirá a escrita dos mesmos? Irá confiar no usuário para gerar a base de dados de endereços para você?

Acredito que, com essas observações e indagações iniciais, você conseguirá evoluir e melhorar a sua modelagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, visto que sua intenção é aprender, vou te guiar por um caminho mais adequado em vez de resolver o problema para você.

 

Vamos analisar alguns problemas da sua interpretação:

  • Duas tabelas (cliente|fornecedor) que possuem exatamente os mesmos campos, sendo a única diferença o ID;
  • Chaves estrangeiras indexadas em duas tabelas (cliente|fornecedor) que vão, invariavelmente, gerar inconsistência em sua base de dados;
  • Existe um "buraco" na abstração das entidades cliente e fornecedor;

Agora às perguntas:

  • Tanto um cliente quanto um fornecedor podem ser pessoa jurídica e/ou física. Se um destes for cliente e fornecedor, ao mesmo tempo, você terá dados repetidos na base de dados?
  • Para a manipulação dos endereços, você permitirá a escrita dos mesmos? Irá confiar no usuário para gerar a base de dados de endereços para você?

Acredito que, com essas observações e indagações iniciais, você conseguirá evoluir e melhorar a sua modelagem.

 

Obrigado pelas dicas, demorei para responder pois fiquei um período sem internet...

Fiz outra modelagem, nossa nova modelagem não coloquei todos os campos, mas seria assim, na tabela física teria todos os campos relacionado a uma pessoa física a jurídica segue o mesmo padrão. Um dos problemas citados duplicidade... seria dois campos na tabela boolean fornecedor e cliente, de acordo com o valor aparecem na tela de fornecedor e/ou cliente...

 

modelf.th.png

 

Enquanto isso vou pensando em outra forma de modelar, se conseguir encontrar outra forma, postarei também

Obrigado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apollyon, eu teria uma solução que no meu ponto de vista, seria mais adequada. Já ouviu falar em Supertipo/Subtipo?

 

Trata-se basicamente, de uma tabela principal com seus campos e outras tabelas "inferiores" que vão complementar essa tabela principal.

 

Imagine o seguinte: Uma tabela "pessoa" com seus campos e outras duas tabelas "juridica" e "fisica" cada uma com seus campos específicos E relacionadas à tabela pessoa. Desta forma você pode obter as informações necessárias de cada "pessoa" sendo física e/ou jurídica.

 

Lembre-se de que as tabelas "inferiores" complementam as informações da tabela principal.

 

Tenho alguns materiais perdidos sobre isso da minhas aulas na faculdade. Assim que encontrar posto aqui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apollyon, eu teria uma solução que no meu ponto de vista, seria mais adequada. Já ouviu falar em Supertipo/Subtipo?

 

Trata-se basicamente, de uma tabela principal com seus campos e outras tabelas "inferiores" que vão complementar essa tabela principal.

 

Imagine o seguinte: Uma tabela "pessoa" com seus campos e outras duas tabelas "juridica" e "fisica" cada uma com seus campos específicos E relacionadas à tabela pessoa. Desta forma você pode obter as informações necessárias de cada "pessoa" sendo física e/ou jurídica.

 

Lembre-se de que as tabelas "inferiores" complementam as informações da tabela principal.

 

Tenho alguns materiais perdidos sobre isso da minhas aulas na faculdade. Assim que encontrar posto aqui!

 

Valeu pelas dicas vou fazer uma pesquisa sobre o tema para ajudar com modelagem

Seguindo a ideia da modelagem acima, só que não citei dos os campos... a tabela pessoa teria campos como id do fornecedor e do cliente, campos como endereço, cidade, entre outros. E na tabela física (rg, cpf, data nascimento, pai, mãe...) e jurídica (razão social, fantasia, cnpj, gerente, ...), pensei nesse modelo, baseado nas perguntas feitas pelo "Daniel R. Gomes", parece estar parecido com o que você citou... porém, vou pesquisar mais sobre o assunto...

Obrigado a todos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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