2012-02-17 3 views
1

Je crée une base de données pour un inventaire d'articles différents. Par exemple, je peux avoir des automobiles, des moteurs et des carburateurs.Comment structurer la base de données pour l'inventaire d'articles différents

Pour chaque type d'élément, il existe des attributs uniques, et certains sont des éléments identifiés de manière unique (AKA «sérialisés») et d'autres non.

Les attributs peuvent être, par exemple:

Voitures

  • serialNumber
  • couleur
  • doorCount
  • transmissionType

moteurs

  • serialNumber
  • cylinderCount
  • déplacement

carburateurs (délinéarisé)

  • barrelCount
  • fabricant

Bien sûr, je dois être en mesure de déterminer combien de chaque type d'article que j'ai. Je ne veux pas créer une table pour chaque type, puisque le type d'élément augmentera au fur et à mesure que je commencerai à transporter des transmissions, des pneus, des radios, des volants, etc.

Une méthode que j'ai vu traiter avec un tel type inventaire hétérogène doit avoir une table item, mais aussi avoir une table attribute. Il ressemble à ceci:

** Tableau: article **

  • (clé) itemType (liée à une table de itemtypes qui incluent "automobile", "moteur", etc.
  • (clé) serialNumber
  • (autres champs communs à tous les itemtypes)

** Tableau: attribut **

  • (clé) attributeType (lié à une table de attributeTypes tels que "color", etc.)
  • (clé) itemType (lié à itemType dans article)
  • (clé) serialNumber (liée à serialNumber dans article)
  • attributeValue (si attributeType est "couleur", cela pourrait être « rouge "," blue ", etc.)

Un défi que cela présente traite des articles non-sérialisés. Bien qu'il soit facile avec cette structure de déterminer que j'ai 35 moteurs, comment pourrais-je représenter que j'ai 52 carburateurs? Je ne veux pas avoir à les sérialiser.

Ceci, bien sûr, n'est pas le seul moyen de structurer une base de données pour un inventaire hétérogène. Qu'avez-vous utilisé, ou quelles autres idées avez-vous?

Merci pour votre aide.

Répondre

2

Essayez cette configuration de table:

table types d'objet:

  • id PRIMAIRE autoindex
  • Nom

articles de table:

  • id PRIMAIRE autoindex
  • de type (touche f pour les types d'éléments)

Attribute_types:

  • id PRIMAIRE autoindex
  • nom

tableau Valeurs:

  • id PRIMAIRE autoindex
  • article (Fkey aux objets)
  • Type
  • (Fkey à attribute_types)
  • valeur

Donc, si vous voulez stocker un moteur, vous souhaitez ajouter le type "moteur" à la table des types, puis ajoutez un article individuel. Ensuite, vous pouvez ajouter des valeurs pour "serial" et d'autres propriétés.

Si vous voulez stocker vos carburateurs, vous pouvez ajouter un type appelé carburateurs, puis faire une seule instance de celui-ci, puis faire « valeur » entrée « quantité » = 53.

Espérons que cela a du sens

+0

Merci. C'est un peu comme j'ai posté, mais j'aime votre idée de faire 'serialNumber' juste un autre attribut. La seule chose que je n'aime pas est de stocker 'quantity' en tant qu'attribut, parce que cette quantité peut être à divers endroits/bacs. Je suppose que cela fait juste intervenir comment je vais aborder les emplacements d'inventaire. Merci, cependant, c'est utile. –

+0

En outre, le problème persiste de représenter que j'ai 8 glucides Edelbrock à quatre tonneaux, 35 glucides Schebler à double barillet et 10 carburateurs Edelbrock à double barillet. L'approche centrée sur l'attribut considère à peu près qu'il doit y avoir un enregistrement 'item' pour chaque pièce d'inventaire. –

+0

Eh bien, peut-être il doit y avoir un itemType pour les carburateurs Edelbrock à double barillet, et un pour chaque autre type. En principe, itemType contiendra tous les numéros de pièces ou les références. –

Questions connexes