Pergunta

Esta não é uma pergunta relacionada a um idioma específico, mas na metodologia correta da arquitetura do inventário de manuseio.

Considere a seguinte estrutura para armazenamento de software:

platforms (platformID*, platformName)
titles (titleID*, titleName)

E a seguir é uma tabela de marceneiro para produtos exclusivos

products (platformID*, titleID*, releaseDate, notes)

E a seguir é uma tabela que eu gostaria de acompanhar meu inventário

inventory (platformID*, titleID*, quantityAvailable)

Em exemplos que vi, outros criaram uma tabela em que cada cópia exclusiva de um software é armazenada em uma linha separada como tal:

software(softwareID*, softwareTitle)
inventory(inventoryID*, softwareID*)

Eu gostaria de saber qual abordagem é preferível? Devo criar um inventário e, portanto, uma linha para cada cópia de software exclusiva:

inventory(inventoryID*, platformID*(fk), titleID*(fk))

Ou use uma tabela que armazena quantidade, como tal:

inventory(platformID*(fk), titleID*(fk), quantityAvailable)
Foi útil?

Solução

Eu também começaria com quantidade disponível em vez de linhas para todos os itens. Mas Eu ainda optaria por um inventário, pois poderia ocorrer casos, onde você deve dissecar as entradas com a mesma combinação de plataforma/título - com um inventário, você é mais aprimorável no futuro.

Eu também recomendaria adicionar uma coluna adicional: VersionNo-o número da versão de um produto de software. Às vezes, você pode ter versões diferentes do mesmo produto. Quando você tem isso, não é uma boa idéia colocar as informações no título (por exemplo, você deseja pesquisar todos os produtos "Microsoft Office", independentemente da versão ...).

Outras dicas

A vantagem de ter uma linha única para cada pedaço de inventário é que, mais tarde, se você quiser acompanhar coisas como inventário que está em escala, inventário que está em pré -encomenda, inventário que foi vendido, mas ainda pode ser devolvido, etc.

Não vejo nenhuma desvantagem real para essa abordagem, exceto que provavelmente é mais trabalho que pode não pagar se essas coisas não forem realmente necessárias.

Devo criar um inventário e, portanto, uma linha para cada cópia de software exclusiva?

Não há razão para fazer isso, a menos que você queira armazenar algumas informações sobre cada cópia de software exclusiva, como a data em que cada cópia foi comprada. Isso raramente é pracítico no inventário do software.

Ou usar uma tabela que armazena quantidade?

Você também pode considerar adicionar um quantityAvailable Coluna em sua tabela de produtos, a menos que você pense que eventualmente deseja ter muitos inventários para cada título, para poder alocar uma quantidade de estoque que está sob oferta especial, que em breve expirará, etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top