我正在尝试在C#中创建一个基本的发票项目。我想创建一个表tblSales,它将包含销售发票的所有详细信息。如果用户想要单个项目,那么它可以,但如果用户想要添加多个项目,那么如何相应地更新表格?我有一个表tblItems,其中包含有关id,name,qty等项目的详细信息。
答案 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
。
希望一切都有道理。这称为规范化数据库。