2017-10-20 136 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

是的,一張發票可以有很多訂單 –