2009-07-29 4 views
0

Je fais un outil de création de citation. Il y a une table qui va stocker toutes les informations sur le client. Ensuite, il y a une table de citation qui partagera la clé customer_id et stockera tous les détails de la citation. Je voudrais stocker tous les détails des produits cités dans le tableau de citation. Maintenant, avec un panier, vous avez une table de produits avec tous les détails du produit et des références croisées, mais avec cela il n'y a pas de quantité de produits, car les produits qui seront cités sont presque infinis et la plupart ne seront cités que une fois et à tous les prix différents.Citer Creator - Meilleure façon d'utiliser SQL

Alors, quand le devis sera tiré vers le haut, je voudrais connaître tous les produits et leurs quantités et prix correspondants dans le devis original. Maintenant la seule façon que je peux penser de faire ceci serait de créer une nouvelle table pour chaque citation créée et préfixer le nom de table avec l'unique quote_id mais ceci pourrait être très salissant avec beaucoup de table - sûrement il y a un meilleur - S'il vous plaît aidez si vous pouvez penser à un meilleur moyen.

Merci et j'espère que je me suis expliqué OK.

Répondre

0

Vous pouvez effectuer une référence croisée dans la table des produits, mais copier les informations susceptibles de changer. Cela signifie que vous avez à la fois les informations telles qu'elles étaient lors de la création du devis et un lien vers les données actuelles de chaque produit.

par exemple. Table QuoteProduct (Quotes aurait plusieurs-plusieurs avec des produits via QuoteProduct):

 
---------------   ------------------  --------------- 
| PRODUCT  | 1:many | QUOTEPRODUCT | many:1 | QUOTE  | 
| ProductId |--------<| QuoteId  |>-------| QuoteId  | 
| Price  |   | ProductId  |  | DateCreated | 
| Description |   | Price   |  | Description | 
---------------   | Description |  --------------- 
         ----------------- 

Vous pouvez donner QuoteProduct sa propre clé primaire ou vous pouvez le faire ProductID, QuoteId. Si vous voulez avoir le même produit dans un seul devis plusieurs fois mais avec un prix différent etc., vous devez probablement lui donner sa propre clé primaire.

0

Créer une nouvelle table, appelez-la quote_items. Fondamentalement, cette table contient des copies de tous les produits dans un devis avec leurs prix comme ils étaient au moment où le devis a été faite. Cette table quote_items a l'ID de devis en tant que clé étrangère. Pour créer un devis, créez une nouvelle entrée dans votre table de devis, puis copiez tous les articles de votre devis dans la table quote_items, avec l'ID de devis du devis que vous venez de créer.

Questions connexes