2017-10-20 275 views
0

我有一张表,当前拥有订单和发票,但我相信这些应该分成2个单独的表。多对多的SQL关系

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

我一直在寻找帮助的正确的方法来消除多对多的关系,在这个例子中

enter image description here

回答

1

1)您的例子显示了一个顺序设置在具有多张发票,但不一定是一个属于同一订单的发票。 a)如果一张发票只属于一个订单,您应该在“发票”表中填写一个字段“订单”(或您喜欢的任何其他相关名称),并将其作为外键。 b)如果一张发票可以属于多个订单(这将确实是一个多对多的关系),您应该制作第三个名为“invoiceorder”的表,它只有两个字段,订单和发票,两者都是其中将分别作为订购和发票表的外键。

2)您的示例还显示多次使用的发票顺序元组。你将不得不在这方面阐明一些事情。也许如果你使用上面的选项1b,你可以添加一个id,然后在你的(large?)表中有一个字段,这个字段对于这个id是一个外键。

+0

每一行都是该订单上的不同项目 –

+0

好的,也回答我这个问题:发票可以出现在很多订单上吗? –

+0

是的,一张发票可以有很多订单 –