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

本文关键字:单个发 项目 关联 何创建 创建 支持 | 更新日期: 2023-09-27 18:02:32

我正在尝试在c#中制作一个基本的发票项目。我想创建一个表tablesales,其中包含销售发票的所有详细信息。如果用户想要一个项目,那么它的ok,但如果用户想要添加多个项目,那么如何更新相应的表?我有一个表tableitems,里面有关于项目的详细信息,比如id,名称,数量等

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

您将需要一个表,让您将多个项目关联到一个发票;它们通常被称为行项目。

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

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])
);

使用这样的结构,您通常会通过以下方式创建发票:首先启动一个事务,插入一个发票,然后为该发票插入发票项,最后提交事务。

您需要第三个表tblSaleItem

这将需要列:ID, SaleID, and ItemID

如果一个销售购买了4件物品,那么在tblSale中将有一行用于该交易,在tblSaleItem中将有四行用于所购买的4件物品。每个条目将有一个SaleID映射到相同的tblSale行。

希望这些都说得通。这被称为规范化数据库。