[RESOLVIDO] Duvida com modelagem

Opa galera alguem poderia me ajudar?
Estou um pouco confuso com esse relacionamento:
ex: cada produto tem estoque

eu tou com duvida em como faria esse relacionamento produto estoque

1:1 ?
1:n ?
n: n?

Alguem poderia me ajudar ??

Num primeiro momento, eu diria 1:1. Porém, vamos supor que no seu sistema vc tenha o controle de lotes de produtos, e que num determinado momento um lote tenha que parar de ser vendido e agora soh pode vender outros lotes, isso já diz que o relacionamento teria que ser 1:n (onde o produto pode ter mais de um estoque e que cada estoque se refere à um lote que deve ter um controle especial).

Veja, nem sei se o que eu escrevi faz total sentido, mas o que quero passar é que vai depender dos requisitos do sistema (do seu negócio!) para que a modelagem, seja ela, 1:1, 1:n ou n:n, faça melhor sentido (que seja mais adequada).

A regra que costumo seguir é 1:n no banco, mas travo em 1:1 na aplicação (quando encontro uma situação semelhante à sua). Isso mantem meu sistema funcionando como preciso e, se um dia precisar de evoluir para uma relação 1:n, por exemplo, eu modifico a aplicação e não tenho tanto impacto no banco de dados.

Abraços.

2 curtidas

Isso é uma aplicação real ou é um exercício?

Como o @Lucas_Camara comentou acima, isso pode variar muito dependendo do cenário a ser contemplado.

A estrutura mais simples que eu considero funcional é 1:N : ter N lançamentos de estoque para cada produto. Esses lançamentos podem ser ser positivos (entradas) ou negativos (saídas), muito similar ao que ocorre numa conta bancária, por exemplo. Assim, o saldo de estoque é basicamente a soma das entradas e a subtração das saídas. Outros fatores podem adicionar complexidade, como localidades (ex: diferentes armazéns) e lotes (como citado acima).

Abraço.

2 curtidas

Estava levando 1:1 como consideraçao
Mas nao sei muito bem a regra de negocio de um supermercado estou fazendo essa aplicaçao para um trabalho na faculdade, mas acho que talvez seja interessanto utilizar lotes, pelo o que eu vi nos supermercados os produtos tem sempre o mesmo codigo de barra isso me faz pensar, sera que seria necessario por lotes?
Fico com duvida dnv kk

ahh sera que vc pode me ajudar com mais outra coisa?
Ex:
funcionario fica no caixa/ caixa realiza venda:

minha duvida a tabela caixa receberia funcionario e a tabela venda receberia caixa?

diagram

E tipo eu tambem nao descarto a possibilidade dependendo dos resultados negociar a aplicacao
ai fica a duvida supermercado trabalha com lotes ?

se tiver como me dar um exemplo pelo oq eu percebi nos codigos de barras como sao todos iguais .

Opa vlw mano
Sobre isso eu teria de ter uma tabela auxiliar para controlar esse lançamentos ?
ex: estoque_detalhes

Acho que a relação entre FUNCIONARIO e CAIXA deveria ser associativa (ex.: FUNCIONARIO_CAIXA), pois um funcionário pode trabalhar em vários caixas diferentes. E essa tabela associativa FUNCIONARIO_CAIXA teria uma relação de 1:n com VENDA, pois o funcionario A no caixa X que realiza a venda.

1 curtida

vlww mano

Opa man com isso eu pensei assim:

Tipo caso eu queria controlar quanto cada caixa / funcionario vendeu no dia, qual produto mais vendeu no dia etc.

eu criaria uma tabela detalhes_vendas com um relacionamento 1:n com item_vendas?

pq tabela vendas vai receber funcionario_caixa e vai ter um relacionamento 1:n

e a tabela vendas tem um relacionamento n:n com produtos gerando uma tabela aux: item_venda com isso eu conseguiria todos os dados ( qtd de dinheiro feito por cada caixa / funcionario / produtos mais vendido no dia)?

Sim, poderia. Essa tabela precisaria basicamente do código do produto e quantidade (positivo para entradas, negativo para saídas). Pode ter outros campos, dependendo de como você quer controlar isso.

Sobre caixas e operadores, talvez seja possível simplificar a coisa (ainda mais sendo um exercício): se não existe nenhuma restrição sobre qual caixa um funcionário pode atender (ex: num mercado em que qualquer funcionário pode operar qualquer caixa), então criar uma relação entre caixa e funcionário não é necessária: basta registrar na venda o operador/funcionário e o caixa que o operador estava operando. Isso é obtido através da abertura de caixa (numa tabela abertura_caixa, por exemplo), que marca um caixa X como aberto e associa um operador/funcionário. Todas as vendas até o fechamento daquele caixa serão registradas para o mesmo funcionário.

Abraço.

1 curtida

entendi entao essa tabela abertura_caixa teria um relacionamento 1:1 com o funcionario e caixa eu um boolean
com isso eu tambem poderia ter uma tabela abertura_detalhes sabendo assim o horario de fechamento e abertura de cada caixa
achei interessante, obrigado man !!

Isso é opcional. Você colocar a data e hora de abertura e fechamento na tabela abertura_caixa, não precisa de uma tabela abertura_detalhes.

Abraço.

1 curtida

opa man poderia me dizer se está da maneira correta?

fiquei cmo uma dúvida em quais dessas tabelas lote ou estoque
ter atributos do tipo: Quantidade onde eu iria ter que decrementar quando se é vendido um id de produto.

Onde fizer mais sentido. No seu caso, experimente primeiro na tabela estoque. Se ver que não ficou bom, experimente em outra.

Abraço.

1 curtida