多对多 SQL 关系

Many-to-many SQL relationship

我有一个 table 目前同时持有订单和发票,但我认为这些应该分成 2 个单独的 table。

 Order       Invoice
 141           428
 141           428
 141           428
 141           646
 141           646
 222           428
 222           428

我正在寻求有关删除此示例中多对多关系的正确方法的帮助

1) 您的示例显示一个订单有多张发票,但一张发票不一定属于同一订单。 a) 如果一张发票只属于一个订单,你应该在table"invoice"中创建一个字段"order"(或你喜欢的任何其他相关名称),并将其设为外键。 b) 如果一个发票可以属于多个订单(这将是一个真正的多对多关系),你应该创建第三个 table 命名为 "invoiceorder",它只有两个字段, order 和 invoice,它们分别是 order 和 invoice tables 的外键。

2) 您的示例还显示了多次使用的发票订单元组。你将不得不阐明这一点。也许如果你使用上面的选项 1b,你可以添加一个 id,然后在你的(大?)table 中有一个字段,它将是这个 id 的外键。