Mysql “一个”怎么说;发票“;表在专业数据库中看起来像什么?

Mysql “一个”怎么说;发票“;表在专业数据库中看起来像什么?,mysql,sql-server,database,Mysql,Sql Server,Database,我正在创建一个.NET簿记应用程序,并认为听取其他人对我的数据库表的看法可能是一个好主意 我有一个“产品”和一个“发票”表格,还有一些与我的问题无关的表格 在计算机语言之外,一张发票在大多数情况下有几种产品 我是否应该创建一个包含InvoiceId和ProductId列的桥接表“invoiceProduct”? 或者我应该只向“invoice”表中添加任意数量的列,名称格式如下:“product1”、“product2”。。。在达到某个限制之前?通常的习惯用法是将父发票表与子发票项目表相结合,如

我正在创建一个.NET簿记应用程序,并认为听取其他人对我的数据库表的看法可能是一个好主意

我有一个“产品”和一个“发票”表格,还有一些与我的问题无关的表格

在计算机语言之外,一张发票在大多数情况下有几种产品

我是否应该创建一个包含InvoiceId和ProductId列的桥接表“invoiceProduct”?
或者我应该只向“invoice”表中添加任意数量的列,名称格式如下:“product1”、“product2”。。。在达到某个限制之前?

通常的习惯用法是将父发票表与子发票项目表相结合,如下所示:

CREATE TABLE invoices
(
    invoice_number  INT,
    customer_id     INT    REFERENCES customers (customer_id),
    purchase_date   DATE,
    -- other fields go here,
    PRIMARY KEY (invoice_number)
);

CREATE TABLE invoice_items
(
    invoice_number   INT   REFERENCES invoices (invoice_number),
    line_number      INT,
    product_id       INT   REFERENCES products (product_id),
    quantity         INT,
    -- more fields,
    PRIMARY KEY (invoice_number, line_number)
);

请注意,这是一个通用的伪SQL,需要为您的特定平台进行编辑,我对大多数字段的
INT
选择完全是任意的。

当然是前者,创建一个桥接表。