如何创建支持将多个项目与单个发票关联的表格?

时间:2014-05-09 16:09:30

标签: c# sql-server

我正在尝试在C#中创建一个基本的发票项目。我想创建一个表tblSales,它将包含销售发票的所有详细信息。如果用户想要单个项目,那么它可以,但如果用户想要添加多个项目,那么如何相应地更新表格?我有一个表tblItems,其中包含有关id,name,qty等项目的详细信息。

2 个答案:

答案 0 :(得分:1)

您需要有一个表格,可以将多个项目与一张发票相关联;它们通常被称为订单项。

我会从您的发票表开始,看起来像这样:

CREATE TABLE [Invoice]
(
    [Id] BIGINT NOT NULL,
    [Title] CHARACTER VARYING(255) NOT NULL,

    PRIMARY KEY([Id])
);

之后,您需要一种存储订单项的方法。这是通过从一个表添加外键到另一个表来完成的。每个发票项目都外键输入发票,从而创建关系。

CREATE TABLE [InvoiceItem]
(
    [Id] BIGINT NOT NULL,
    [InvoiceId] BIGINT FOREIGN KEY REFERENCES [Invoice]([Id]) NOT NULL,
    [Name] CHARACTER VARYING(255) NOT NULL,
    [Quantity] INTEGER NOT NULL,
    [Total] SMALLMONEY NOT NULL,

    PRIMARY KEY([Id])
);

使用这样的结构,您通常会先创建一个交易,插入发票,然后插入该发票的发票项目,最后提交交易,从而创建发票。

答案 1 :(得分:0)

您需要第三个名为tblSaleItem的表。

这需要列:ID, SaleID, and ItemID

如果销售购买了4件物品,则tblSale代表该交易将有一行,tblSaleItem代表所有4件商品中的4行。每个项目都会有SaleID映射到同一行tblSale

希望一切都有道理。这称为规范化数据库。