Duvida Modelagem

6 respostas
douglasmorais

Olá amigos, trabalho numa empresa nao como programador.
Mas o pessoal ta precisando de um sistema pra controlar estoque, vendas e ordens de compra.
A principio pensei em me oferecer para fazer. Mas antes de me comprometer andei pensando um pouco sobre como seria a modelagem do banco de dados e logo de cara surgiram algumas duvidas.
Peço a ajuda de vocês entao pra ver se consigo dar uma clareada nas ideias.

Preciso fazer um sistema para uma otica.

A otica tem tipos de produtos:

  • Lente de Contato;
  • Armação de Óculos;
  • Lente para Óculos Visao Simples;
  • Lente para óculos Multifocal;
  • Lente para óculos Bifocal.

Qual é a melhor maneira de modelar o as tabelas ?

Devo criar uma tabela pra cada tipo de produto ?

Devo modelar uma unica tabela Produto com todos os campos de cada produto correndo o risco de ter
varios campos null dependendo do produto salvo no banco ?

Pensei em criar uma classe Produto generica e criar as outras classes especificas extendendo
ela.

será que alguem poderia dar umas dicas ?

6 Respostas

I

Opa, blza amigo.

Acho que a melhor dica que eu posso te dar é vc ter uma classe produto, e uma classe grupo.

Grupo vc cadastraria Lente de Contato, Armação de Óculos e assim por diante
e ao cadastrar o grupo vc informa o Grupo,

ou dependendo da regra do seu negócio uma opção é utilizar Enums

Vc criaria a tabela produto com uma coluna “Tipo de Produto” e ao efetuar o cadastro vc escolhe dentre as opções que vc tem, que vc já criou seu enum. e fica preenchido em uma única coluna da sua tabela, sem riscos de nulo a menos que vc permita e o usuário não preencha

dreampeppers99

A resposta é depende de suas necessidades! se for só pra montar um orçamento pode ser que uma só tabela de produtos resolva… mas se houver mais e mais especificidades haverá com toda certeza mais tabelas.

Normalmente não, cria a tabela produto e outra tipo de produto e relaciona as duas.

Há também o conceito de herança no banco então você pode ter um produto que tem atributos comuns para todos e “sub” tabelas com especificidades, claro se valer a pena.

douglasmorais:

Pensei em criar uma classe Produto generica e criar as outras classes especificas extendendo
ela. será que alguem poderia dar umas dicas ?

Modelagem é complexo não porque é dificil mas porque tem que atendar ao seu proposito. Talvez passemos pra você uma ULTRA modelagem desnecessária pra você… foque-se no necessário.

brunorota

Humm, ae pra ter um idéia melhor tinha que saber que campos cada tabela precisaria ter, se fosse todos iguais, ou praticamente iguais, dava pra fazer isso que dreampeppers falou que não ia ter campos nulos

douglasmorais

Valeu, vou continuar refletindo, rs

douglasmorais

Entao, seguindo a sugentao do Dream, Tabela Categoria e Tabela Produto, fico pensando como vou fazer com os produtos que tem um mais ou menos colunas do que os outros.
Por exemplo:

Para o produto ARMAÇÃO, os campos seriam Id, Marca, Descrição.
Para o produto LENTE PARA OCULOS, os campos seriam Id, Fabricante, Descricao, Diametro, Esferico e Cilindrico.

Como eu faço nesse caso ?

dreampeppers99

douglasmorais:
Entao, seguindo a sugentao do Dream, Tabela Categoria e Tabela Produto, fico pensando como vou fazer com os produtos que tem um mais ou menos colunas do que os outros.
Por exemplo:
Para o produto ARMAÇÃO, os campos seriam Id, Marca, Descrição.
Para o produto LENTE PARA OCULOS, os campos seriam Id, Fabricante, Descricao, Diametro, Esferico e Cilindrico.
Como eu faço nesse caso ?

Você pode ver essas Características de diversas formas uma delas é :

Criar uma tabela Chamada CARACTERISTICAS (INT ID, VARCHAR(250) PROPRIEDADE, VARCHAR(500) VALOR) e fazer relacionamento de Produto com Caracteristica,
Um produto pode ter um ou mais caracteristicas. (isso inclui uma tabela no meio … ou não, depende de sua abordagem)
Você transforma a linha em duas colunas, perde-se a integridade de tipos e outros que fica na sua mão. Por outro lado você ganha em flexibilidade criando novos “campos”. É uma questão de “análise”!

Essa abordagem da Caracteristica pode facilitar a criação das telas também… tudo mais num mesmo padrão. Imagine se o submario.com.br tivesse que criar uma “sub” tabela nova a cada nova caractristica que determinado produto tem.

Criado 4 de maio de 2011
Ultima resposta 4 de mai. de 2011
Respostas 6
Participantes 4