Quote Creator - 使用SQL的最佳方式

时间:2009-07-29 10:56:43

标签: php sql

我正在做一个引用创建工具。有一个表将存储所有客户信息。然后有一个报价表,它将共享customer_id密钥并存储报价的所有细节。

我想存储报价表中引用的产品的所有详细信息。现在有了购物车,您将拥有一个产品表,其中包含所有产品详细信息和交叉参考,但由于此产品没有设定数量的产品,因为所引用的产品几乎是无限的,大多数只会引用曾经且价格各不相同。

因此,在将来引用报价时,我想知道原始报价中的所有产品及其相应的数量和价格。

现在,我能想到这样做的唯一方法是为每个创建的引号创建一个新表,并使用唯一的quote_id为表名添加前缀,但这可能会让很多表格变得非常混乱 - 当然有更好的表格 - 如果你能想出更好的方法,请帮忙。

谢谢,希望我能解释清楚。

2 个答案:

答案 0 :(得分:0)

您可以交叉引用products表,但可以复制可能更改的任何信息。这意味着您既可以获得创建报价时的信息,也可以获得返回每个产品当前数据的链接。

e.g。 QuoteProduct表(行情与产品通过QuoteProduct有很多关系):

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

您可以为QuoteProduct提供自己的主键,也可以将其设为ProductId,QuoteId。如果您希望在单个报价中多次使用相同的产品,但价格不同等,则可能需要为其提供自己的主键。

答案 1 :(得分:0)

创建一个新表,将其称为quote_items。基本上,此表包含报价中所有产品的副本,其价格与报价制作时的价格相同。此quote_items表将引用ID作为外键。

要创建报价,请在报价表中创建一个新条目,然后将报价中的所有项目复制到quote_items表中,并使用刚创建的报价的报价ID。