我有三個表 -[MySQL]:有沒有更有效的方式來鏈接這些表格?
Transaction:
ID TimeStamp
Discount:
Code Amount
Transaction_Discount:
ID Code
這幾乎爲基本,你可以得到。
有沒有更有效的方法將這些表連接在一起?
我有三個表 -[MySQL]:有沒有更有效的方式來鏈接這些表格?
Transaction:
ID TimeStamp
Discount:
Code Amount
Transaction_Discount:
ID Code
這幾乎爲基本,你可以得到。
有沒有更有效的方法將這些表連接在一起?
如果您正在建模一個交易可以有0個或更多的折扣和一個折扣可以應用到0個或更多的交易那麼這3個表的方法是標準的方式去。
我唯一要做的改變是給代碼字段以外的數字主鍵打折,並將其用作Transaction_Discount中的外鍵。
+1偉大的建議,正是我會做的。 – David 2010-01-27 23:10:59
如果它是一對一的,那麼只需在您的交易表中添加一個折扣碼字段即可。
如果它是一對多的,那麼將一個交易ID添加到您的折扣表中。
如果它是多對多的話,那麼你擁有的三表解決方案是唯一的路線。
從您的評論中,這種關係是一對多的關係,其中一個折扣可以適用於很多交易。
因此,應該按如下步驟進行建模你的表:
Transaction table:
id, discount_id, timestamp
Discount table:
id, code, amount
正如你可以看到有沒有必要爲第三鏈接表。如果這種關係是多對多的,這隻會是必要的。
您還可以看到,由於交易只有一個折扣,因此我們將折扣ID作爲外鍵存儲在交易表中。這樣,如果我們想要的話,我們可以有許多交易引用相同的折扣,但每筆交易只會引用一個折扣。
它是一個還是一對多的關係? – HLGEM 2010-01-27 23:06:40
誠實地不太確定究竟是什麼......但我相信這是多對多 – 2010-01-27 23:18:13
是否可以有多個與單個「TRANSACTION」記錄關聯的「TRANSACTION_DISCOUNT」記錄?如果是 - 那是一對多的關係。如果不是,那麼這是一對一的關係,並且一對一關係沒有任何好處,因爲它與「TRANSACTIONS」表中的「CODE」列相同。 – 2010-01-27 23:24:09