Fórum Duvida na modelagem de dados #516722
14/04/2015
0
é o seguinte, to fazendo um programinha pra ótica, mas to com duvida na parte de vendas,
to com 4 tabelas
Tb_Armacão, Tb_Lentes, Tb_Oculos e Tb_Serviços,
como faço pra ter uma ligação com os itens de venda,
quando adicionar os produtos, eles ficarem listados na grid, sendo que cada tabela tem alguns campos diferentes
a duvida é na pesquisa.
desde já obrigado.
Att, Weliton Gomes
Weliton Gomes
Curtir tópico
+ 0Post mais votado
14/04/2015
Você não precisa colocar Lentes, armações e óculos separado, pois são todos produtos que serão vendidos. Você apenas separa por uma tabela de Itens de Venda, onde ficarão os produtos e suas respectivas quantidades e valores.
Sobre o serviço, você faz uma tabela, ligado com o Itens de Venda, parecido com a de produtos, ou você pode colocar separado, pois se tratando de itens fiscais, são coisas distintas.
Olhe esse exemplo, é um pouco simples, mas é uma boa representação.
Caso isso não explique suas dúvidas, tente explicar um pouco mais, pois eu não compreendi muito bem onde está sua dificuldade.
[img:descricao=MER]http://videos.web-03.net/REVISTAS/java/imagens/114/3/image002.png[/img]
Randrade
Gostei + 1
Mais Posts
14/04/2015
Marilia Silva
[url]http://www.luis.blog.br/chave%20primaria-chave-estrangeira-e-candidata.aspx[/url]
Gostei + 0
14/04/2015
Weliton Gomes
[url]http://www.luis.blog.br/chave%20primaria-chave-estrangeira-e-candidata.aspx[/url]
bom, de certa forma nao, por que pra cada categoria haverá campos diferentes (Armação, Lentes, Oculos, e o Serviço) venda separada.
Gostei + 0
14/04/2015
Vinicius Silva
A tabela Óculos e a principal e as demais você tem que adicionar os itens "Lentes, Armação, e Serviço" no óculos completo certo?
caso os itens sejam apenas uma unidade para cada óculos exemplo: 1 par de lentes, 1 armação e um serviço basta você fazer um relacionamento de 1 para 1.
caso o seu óculos receba mais de um item ou serviço você deve usar 1 para N itens onde um óculos pode receber mais de item e mais de um serviço.
Gostei + 0
14/04/2015
Vinicius Silva
A tabela Óculos e a principal e as demais você tem que adicionar os itens "Lentes, Armação, e Serviço" no óculos completo certo?
caso os itens sejam apenas uma unidade para cada óculos exemplo: 1 par de lentes, 1 armação e um serviço basta você fazer um relacionamento de 1 para 1.
caso o seu óculos receba mais de um item ou serviço você deve usar 1 para N itens onde um óculos pode receber mais de item e mais de um serviço.
Gostei + 0
14/04/2015
Vinicius Silva
A tabela Óculos e a principal e as demais você tem que adicionar os itens "Lentes, Armação, e Serviço" no óculos completo certo?
caso os itens sejam apenas uma unidade para cada óculos exemplo: 1 par de lentes, 1 armação e um serviço basta você fazer um relacionamento de 1 para 1.
caso o seu óculos receba mais de um item ou serviço você deve usar 1 para N itens onde um óculos pode receber mais de item e mais de um serviço.
Gostei + 0
14/04/2015
Weliton Gomes
A tabela Óculos e a principal e as demais você tem que adicionar os itens "Lentes, Armação, e Serviço" no óculos completo certo?
caso os itens sejam apenas uma unidade para cada óculos exemplo: 1 par de lentes, 1 armação e um serviço basta você fazer um relacionamento de 1 para 1.
caso o seu óculos receba mais de um item ou serviço você deve usar 1 para N itens onde um óculos pode receber mais de item e mais de um serviço.
bom é o seguinte, os cadastros serão feitos separados, das lentes, das armaçoes, e de oculos já prontos, enfim, a otica por vender somente uma armação, pode mandar fazer o oculos, uma armação e duas lente, ou duas lente, sendo que o cliente tenha sua lente propria, e demais serviços,
Gostei + 0
14/04/2015
Marilia Silva
Gostei + 0
14/04/2015
Weliton Gomes
[img:descricao=Tabela da lente ]http://arquivo.devmedia.com.br/forum/imagem/377027-20150414-165851.png[/img]
Gostei + 0
14/04/2015
Weliton Gomes
[img:descricao=Tabela da lente ]http://arquivo.devmedia.com.br/forum/imagem/377027-20150414-165851.png[/img]
se eu colocar todos os atributos de todos os itens numa só tabela produto, terá muito campo null, e é projeto pra TCC, e nao passaria .
Gostei + 0
14/04/2015
Marcos P
Normalizar não passa por criar generalizações de dados, mas sim, por planejar o isolamento de atributos que agregados representariam baixa performance no momento da manipulação.
Portanto, particularize suas tabelas de modo que o relacionamento seja o melhor possível para as posteriores consultas do lado da aplicação.
O relacionamento colocado pelo Randrade é um ótimo caminho.
Cabe a você detalhar o nível de especificidade que você precisa a partir do atual relacionamento item_pedido x produto.
Você pode fazer :
( por exemplo... )
> item_pedido x tipo_produto x lente
> item_pedido x tipo_produto x armacao
> item_pedido x tipo_produto x oculos
> item_pedido x tipo_produto x servico
Onde as tabelas "da ponta" armazenam os detalhes específicos de cada item e "tipo_produto" indica em qual tabela você deve localizar o item relacionado ( ou seja, uma chave composta ).
Gostei + 0
14/04/2015
Jothaz
A sugestão do Randrade, como sempre é o caminho, isto é normalização.
Gostei + 0
14/04/2015
Randrade
Abaixo segue alguns exemplos de estudos. Não estão relacionado diretamente com o MySql, porém é bom para entendimento.
Catalogo de Produtos
Banco de dados orientado a objetos
Herança em Banco de Dados
Esquema de Banco de Dados
Herança em POO
Herança e Polimorfismo
Você possui mais algumas opções, como:
Uma tabela para todos os produto: Dessa forma não está errado. Existe ocasiões que você necessitará colocar uma tabela para todos. Sai um pouco do conceito de OO, e tudo, mas existe linguagens que você não tem para onde correr.
Uma tabela para cada produto: Onde você possui uma tabela para cada te produto, contando com preço, descrição, etc.
[url:descricao=Serialização: ]http://martinfowler.com/eaaCatalog/serializedLOB.html[/url] Onde de uma maneira mais bruta, você possui uma única tabela, e guarda todos os dados que não forem iguais para todos, em um tipo blob, no formato XML, JSON, etc e trabalha com isso na aplicação.
[url:descricao=Referência]http://stackoverflow.com/questions/695752/how-to-design-a-product-table-for-many-kinds-of-product-where-each-product-has-m[/url]
Gostei + 1
14/04/2015
Marcos P
Randrade, isso não foi uma resposta, foi uma consultoria completa. Parabéns !!!
Gostei + 1
14/04/2015
Weliton Gomes
Abaixo segue alguns exemplos de estudos. Não estão relacionado diretamente com o MySql, porém é bom para entendimento.
Catalogo de Produtos
Banco de dados orientado a objetos
Herança em Banco de Dados
Esquema de Banco de Dados
Herança em POO
Herança e Polimorfismo
Você possui mais algumas opções, como:
Uma tabela para todos os produto: Dessa forma não está errado. Existe ocasiões que você necessitará colocar uma tabela para todos. Sai um pouco do conceito de OO, e tudo, mas existe linguagens que você não tem para onde correr.
Uma tabela para cada produto: Onde você possui uma tabela para cada te produto, contando com preço, descrição, etc.
[url:descricao=Serialização: ]http://martinfowler.com/eaaCatalog/serializedLOB.html[/url] Onde de uma maneira mais bruta, você possui uma única tabela, e guarda todos os dados que não forem iguais para todos, em um tipo blob, no formato XML, JSON, etc e trabalha com isso na aplicação.
[url:descricao=Referência]http://stackoverflow.com/questions/695752/how-to-design-a-product-table-for-many-kinds-of-product-where-each-product-has-m[/url]
Marcos P, eu entendi o ponto do Randrade, porem.... ele chegou no ponto que eu tava explicando, e vcs nao entendia.
"Pois creio eu que a lente terá os dados de produtos contidos nela também. Assim ela será um produto, porém terá atributos a mais."
a minha complicação era isso, e nao se resolveria daquela forma, no mais, muito obrigado.
Valeu a atenção de todos.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)