Como armazenar uma lista no MySQL

8 respostas Resolvido
programaçãojavamysql
E

Olá, estou fazendo um programa que armazena dados de uma venda, essa venda é composta por nome do cliente, cpf do cliente, subtotal, total, desconto e a lista do que foi comprado, minha dúvida é, como armazenar essa List com os produtos comprados no MySQL?

8 Respostas

V

Crie uma tabela venda com os atributos:
codigoVenda
produto
data
quantidade
valor
idcliente

J

Crie um método que percorra toda sua lista e faça o insert no banco de dados!

Exemplo:

private void salvarVenda(ListVenda list) {
    for (ModelVenda venda : list) {
        //Faz insert no banco de dados
    }
}
E

Me surgiu uma dúvida quanto a isso, o atributo no banco de dados pode receber mais de um valor? Por exemplo eu quero adicionar 3 produtos para uma venda de id 0051, o atributo produto receberia esses três produtos ou teria que criar outra tabela pra armazenar esses produtos e chama-la para poder mostrar a lista?

J
Solucao aceita

Não tem como uma coluna receber mais de um valor, cada valor inserido no banco é um registro único!

Exemplo de uma estrutura:

Consideramos que um cliente pode ter 1 ou N compras certo ?
Consideramos também que cada venda deve pertencer a 1 cliente certo ?
Consideramos também que uma venda pode possuir N produtos certo ?
Consideramos também que cada produto deve pertencer a uma venda certo ?
Consideramos também que um produto pode estar em 1 ou N vendas, podendo aparecer 1 ou N vezes dentro de uma mesma venda certo ?

Logo com esse cenário imaginado, podemos pensar na estrutura das tabelas: (vou modelar uma ideia bem simples, implemente conforme sua necessidade)

Tabela Cliente
idCliente - PK
nomCliente

Tabela Produto
idProduto - PK
desProduto
valProduto

Tabela Venda
idVenda - Pk
idCliente - FK

Tabela Produto Venda
sequencia - PK
idVenda - PK/FK
idProduto - FK
qtdeProduto
valProduto

Com essa estrutura, você irá persistir uma venda com 1 ou N produtos!

V

Não, uma das características do Banco de dados se chama atomicidade que diz exatamente isso, uma linha não pode receber mais de um valor.

E

Irei tentar aplicar isso, depois retorno ao tópico pra informar se funcionou ou não, obrigado

E

Consegui galera, obrigado pela ajuda o/

G

You can do it with MySQL Relationships. By using foreign keys to relate your tables. You should have 2 tables. 1 for your main product and another table for your subproducts.

mobile app developer Dubai

Criado 5 de abril de 2018
Ultima resposta 6 de abr. de 2018
Respostas 8
Participantes 4