Schéma de base de données de point de vente et d'inventaire

Je suis en train de créer un de base Point de Vente et le système de gestion des Stocks.

Certaines choses à prendre en compte:

  • Les produits sont toujours les mêmes (même ID) à travers l'ensemble du système, mais l'inventaire (unités disponibles à la vente par produit) est unique pour chaque emplacement. Emplacement de Y et Z ont tous deux pour des unités de vente du produit X, mais si, par exemple, deux unités sont vendues à partir de l'adresse Y, emplacement Z inventaire ne devrait pas être affectée. Son approvisionné unités sont encore intacts.
  • De la vente d'une (1) unité de produit X à partir de l'adresse Y, les moyens de l'inventaire de l'emplacement de Y soustraire une unité à partir de son inventaire.

De cela, j'ai pensé à ces tableaux:

  • endroits
    • id
    • nom
  • produits
    • id
    • nom
  • transactions
    • id
    • description
  • inventories_header
    • id
    • location_id
    • product_id
  • inventories_detail
    • inventories_id
    • l'identificateur de la transaction
    • unit_cost
    • unit_price
    • quantité
  • orders_header
    • id
    • date
    • total (calculé à partir de orders_detail quantité * prix; seulement pour l'avenir, la validation des données)
  • orders_detail
    • order_id
    • l'identificateur de la transaction
    • product_id
    • quantité
    • prix

Bon, alors, y at-il des questions? Bien sûr.

  1. Comment puis-je suivre les changements dans les parts coût? Si un jour j'ai commencer à payer plus pour un produit donné, j'aurais besoin de garder une trace de l'utilité marginale ((cost*quantity) - (price*quantity) = marginal utility) d'une certaine façon. J'ai pensé à inventories_detail principalement pour cette. Je n'aurais pas pris soin autrement.
  2. Sont des relations bien établies? J'ai encore une difficulté à penser si les lieux ont des stocks, ou si les stocks ont plusieurs emplacements. C'est exaspérant.
  3. Comment voulez-vous garder/connaître vos niveaux de stocks en cours? Depuis que j'ai eu pour séparer la table des stocks de garder en place avec le coût des mises à jour, je suppose que je voudrais juste ajouter toutes les quantités indiquées dans inventories_detail.
  4. Toutes les suggestions que vous voulez partager?

Je suis sûr que j'ai encore quelques questions, mais elles sont pour la plupart ceux que j'ai à traiter. Aussi, depuis que je suis en utilisant Ruby on Rails pour la première fois, en fait, comme une expérience d'apprentissage, c'est une honte d'être arrêté lors de la conception, de ne pas me laisser percer à travers la mise en œuvre plus rapide, mais je suppose que c'est la façon dont il devrait être.

Merci d'avance.

source d'informationauteur Andrés Botero