2009-10-14 6 views
0

Ma question est de savoir comment modéliser des transactions pour différents types de produits.DB question de schéma, types de produits

Donc, il y a une table Transactions:

TransactionId(pk) 
Amount 
Method 
AuthorisedBy(fk) 

Et il y a des tables différentes pour les différents types de produits. Table Livres:

BookId(pk) 
Name 
Description 
Price 

Et une table Stylos:

PenId(pk) 
Color 
Description 
Price 

Et une table pour les services d'affûtage de crayon:

SharpenId(pk) 
Description 
Price 

Maintenant, ma question relie les transactions avec le identifiant particulier des différents articles. Une méthode était d'avoir dans la table de transaction:

TransactionId(pk) 
Amount 
Method 
AuthorisedBy 
ProductType 
ProductTypeId(fk) 

Si le type de produit se réfère au titre de la table, par exemple, livres et l'identifiant du produit désignerait bookID dans ce cas.

ou une autre méthode serait d'avoir une table de liaison des « produits » qui font référence à chacun des différents id des autres tables, de sorte que la table de transactions ressemblerait à ceci:

TransactionId(pk) 
Amount 
Method 
AuthorisedBy 
ProductID(fk) 

et la table des produits seraient ressembler à ceci:

ProductId(pk) 
PoductType 
ProductTypeId(fk) 

Mais alors c'est une table qui est exactement la même que la table des transactions. Donc, ma question est de savoir comment relier efficacement les différentes tables de types de produits aux transactions? Veuillez noter que je ne suis pas en train de modéliser un service d'affûtage de crayons, ce ne sont que des exemples: P

Répondre

2

Tout d'abord, je n'aime pas le modèle DB. Vous n'avez besoin que d'une table pour la définition du produit pouvant contenir des colonnes décrivant chaque produit: (table) Produits: ID - PK, Nom, Description, Couleur, Prix, Type de produit - FK

Vous avez besoin d'un tableau supplémentaire qui explique le type du produit, sa catégorie disons: (table) ProductTypes: ProductTypeID - PK, ProductTypeName

Et pour l'enregistrement des transactions que vous aurez besoin seulement d'une table: (table) transactions: transactionId, ProductID - FK, Montant, méthode , AuthorizedBy

Je pense que ce schéma vous convient pour résoudre votre problème. Codage heureux.

+0

Mais mes types de produits sont extrêmement différents les uns des autres, et par exemple dans ma table de 'pencil sharpening', parce que c'est un service, il y a BEAUCOUP d'entrées différentes dans ce tableau, et comment ces données seraient stockées dans vos produits tables, car ils n'ont pas de «couleurs», ou d'autres colonnes en commun en dehors du prix, de la description. – theraven

+0

+1 Vous pouvez étendre la table des produits avec une relation 1: 1 pour ajouter certaines propriétés; comme les ProductTypes mentionnés dans cette réponse, ou ProductColor pour votre commentaire.La table de produit elle-même peut contenir tous les champs dont vous avez besoin pour générer une facture, et le code de facturation peut faire sans la complexité nécessaire pour traiter les différents types de produits. – Andomar

+0

Je vais donner une réponse à cette réponse, car elle répond à la question que j'ai posée, mais malheureusement, ma question doit être réformée et posée plus tard. – theraven

Questions connexes