Então, venho tentando projetar um sistema de gerenciamento de estoque para um showroom de carros. O problema com este design é que posso comprar, mas ao vender o produto não consigo vinculá-lo à minha compra. A ideia que tive é adicionar um Batch_ID à minha tabela Inventory_Details , mas só posso vincular esse Batch_ID na minha tabela de detalhes, não na minha tabela de inventário. Qualquer sugestão será útil.
relate perguntas
-
Os índices filtrados podem ajudar a melhorar as consultas baseadas em uma hora inserida ou isso deve ser evitado?
-
Qual é a diferença entre os tipos de dados MySQL VARCHAR e TEXT?
-
É melhor armazenar os valores calculados ou recalculá-los a pedido? [duplicado]
-
Armazenar vs calcular valores agregados
-
Quais são algumas maneiras de implementar um relacionamento muitos-para-muitos em um data warehouse?
Em um Sistema de Armazém de Estoque tradicional ou Sistema de Gerenciamento de Armazém (WMS) sempre que um novo Item é colocado em mãos (ou seja, criado ou comprado e, portanto, adicionado ao Estoque), um identificador exclusivo deve ser criado, geralmente um número de série , antes que você possa inseri-lo no Inventário e ajuste sua quantidade disponível. No contexto de um showroom de carros, imagino que este seria o
VIN
lugar. (Não sou especialista em carros, mas acredito que seja um identificador único.)Mesmo quando um item é recebido em quantidades de lote, muitos identificadores exclusivos precisam ser adicionados ao seu Estoque antes que você possa adicionar a quantidade à sua quantidade disponível. Portanto, se sua
Purchase
tabela tiver uma relação um-para-muitos com quantos carros umPurchase
pode comprar, por causa de lotes, você não poderá relacioná-la diretamente com suaInventory
tabela ( ainda ). Em vez disso, você deve ter uma tabela separada, como oPurchaseLines
que é muitos para um com suaPurchase
tabela, e tem uma linha com o exclusivoVIN
para cada carro que foi comprado. (Isso é até uma simplificação, pois um WMS real normalizaisso mais adiante em pelo menos mais 2 tabelas para fins de contabilidade, mas acho que está fora do escopo aqui, e isso deve ser suficiente para o que você precisa.) SuaInventoryDetails
tabela conteria oVIN
também e se relacionaria diretamente com oPurchaseLine
que veio.Além disso, você deve ter apenas uma
Items
tabela que defina os critérios de seus carros, para que possa se referir genericamente à sua quantidade disponível porItem
. Como tenho certeza de que você não deseja rastrear a quantidade individual de aVIN
que sempre será 1 (já que minhas alterações acima resultarão nisso). Em vez disso, se você tiver umaItems
tabela com campos comoModel
,Description
,Color
,MFYear
etc, suaInventoryDetails
tabela se tornará mais normalizada e armazenará apenas umItemId
campo (um para um com aItems
tabela). Em seguida, suaInventory
tabela agora pode rastrear a quantidade de umItemId
que seria o relacionamento entreInventoryDetails
.Finalmente, o conceito de an
ItemId
se torna universal em todo o Warehouse Management System . É como sua unidade de medida central. Deve fazer parte de suas Compras (emPurchaseLines
) e de suas Vendas (em uma tabela equivalenteSalesLines
também), e é uma forma de estabelecer qual item foi negociado.Recursos adicionais:
Você consideraria relacionar compras e vendas
car_id
?Por que não se relacionar
car_ids
juntos? Acar_id
relaciona uma compra com uma venda exclusivamente.Assim, caso esse carro seja vendido, você pode relacioná-lo diretamente com a compra correspondente que foi feita anteriormente.