Commentaires / Suggestions sur la design de la database – Warehouse Stock Management

Je suis en train de créer un système de gestion de stock qui utilise plusieurs entrepôts (avec des sous-locations) et comme c'est mon premier gros projet, j'aimerais avoir des returns.

Laissez-moi vous montrer ce que j'ai fait jusqu'ici … Lien comme Im encore nouveau ici

Vous devez d'abord créer un magasin, puis vous pouvez créer un location dans cet entrepôt.

Vous pouvez également créer un ItemType (ItemGroup), puis créer un Item pour ce groupe.

Une fois que vous disposez d'un article et d'un location, vous pouvez append du stock. La table des stocks comporte une key composite qui empêche l'ajout de duplicates. J'ai également ajouté une contrainte pour que vous ne puissiez pas entrer un Item du mauvais ItemType, même contrainte sur les Warehouses / Location.

J'ai ensuite besoin de garder des loggings de chaque pièce de stock, SerialisedItems et NonSerialisedItems. Exemple: Si du stock non sérialisé est ajouté avec une quantité de 10, alors je crée actuellement 10 lignes dans la table NonSerializedItems (1) qui sont mises en stock avec les informations de stock pertinentes. Si elles modifient la quantité de stock, les lignes seront supprimées ou ajoutées (2).

Je pourrais aussi faire avec une table Van quelque part semblable à Warehouse, mais je pense que je devrais changer la table Warehouse en quelque chose comme Storage qui fait reference à deux tables, Warehouse et Van?

(1) J'ai actuellement un TransactionScope sur ma page en ajoutant x nombre de lignes, Est-ce la meilleure façon de gérer cela? (2) Le montant de la quantité dans le tableau Stock devrait countr le nombre de lignes pour cet article et ensuite mettre à jour la quantité chaque fois que le stock est ajouté ou supprimé, des problèmes ici?Les deux questions ont été corrigées – Créez uniquement des lignes pour les articles sérialisés.

D'autres problèmes?

Eh bien c'est ce que j'ai fait, si c'est bon ou terrible faites le moi savoir. Aussi, s'il y a des pièges que je devrais regarder pour ce serait également bon à savoir.

Merci

[EDIT] Merci à Neville KI ont fait quelques changements …

Lien vers une nouvelle database améliorée

Cela semble avoir beaucoup plus de sens! Je pense que je l'avais regardé longtime hier!

Tout d'abord, il s'agit d'un problème à peu près résolu – la meilleure ressource que je connaisse est la série « livre de ressources de templates de données »; il y a un model très flexible pour les applications de maintenance des stocks.

Deuxièmement, votre design n'est pas très normalisée, et repose sur beaucoup de duplication. Vous ne savez pas quel est le raisonnement, mais habituellement, la table "stock" aurait un lien vers "item", mais pas "itemType" – le fait qu'un élément appartient à un type d'élément est déjà capturé dans la relation entre item et item tapez, et vous n'avez pas besoin de le dupliquer. La même chose vaut pour l'location et l'entrepôt.

Le changement key que je suggère est le concept d'une transaction boursière, plutôt que d'un seul tableau «stock».

Quelque chose dans le genre de

TransactionID date itemID locationID quantity ------------------------------------------------------------------ 1 1/1/12 1 1 10 2 1/2/12 1 1 -1 3 1/3/12 1 1 20 

Pour connaître le stock actuel d'un article, vous additionnez (quantité) groupe par article; pour find le stock actuel d'un article réparti par location, vous additionnez (quantité) groupe par article, location.

Le premier janvier, il y avait 10 articles en stock; sur le second, 1 object a été retiré, laissant un stock de 9; le 3, 20 nouveaux articles sont entrés en stock, soit un solde de 29.

Cette design vous permet de suivre les changements dans le time, ce qui est une exigence commune; il fournit également une piste d'audit en créant des méta-données de transaction (userID, numéro de facture, etc.).