将发票存储在数据库中

时间:2012-04-25 23:48:09

标签: sql database normalization

我正在制作一张发票软件,我希望它能保存每张发票。

用户通过选择客户来创建发票,以及向客户收取许多项目。看起来大多数发票都有多个项目,将它们保存到数据库的最佳方法是什么,而不是非常多余?如果需要,我愿意重新整理我的整个数据库。

我的表格如下:

客户表:

Id        / Primary key
FullName
Address
Phone

项目表(提供的产品表):

Id        / Primary key
ItemName
Price
Description

发票表(已保存的发票):

Id        / Primary key
CustId    / Foreign key is Id in Customer table
ItemId    / Foreign key is Id in Item table
Notes

2 个答案:

答案 0 :(得分:8)

您需要另一张表来存储发票(您所谓的Invoices现在实际存储发票项目)。

Customer
    id
    name
    etc.

Item
    id
    name
    etc.

Invoice
    id
    cust_id
    date

InvoiceItem
    id
    inv_id
    item_id

这是使用联结表(InvoiceItem)对many to many relationship进行建模的经典方法。

答案 1 :(得分:2)

看起来你真的想要第4张表来加入它们。要规范化您的数据,只需在每行上保留特定于该发票的内容

发票表

Id        / Primary key
CustId    / Foreign key is Id in Customer table
Notes

发票项目表

InvoiceId
ItemId