2012-06-18 45 views
0

我正在開發一個項目,用戶可以在網站上保存自己的優惠券代碼,所以我想知道什麼是最佳方式。如何在數據庫中映射兩個表PHPMyAdmin

比方說,我有1臺與用戶,就像這樣:

userId | firstName | lastName | codeId 

然後,我有優惠券代碼表,像這樣:

codeId | codeNumber 

所以我所能do是將codeId連接到userId,因此當有人保存優惠券時,優惠券表中的codeId會進入用戶表的codeId

但是現在如果用戶有多張優惠券,該怎麼辦?他們應該如何連接到用戶?

我有2個選擇做什麼:

  1. 保存codeId從優惠券表爲用戶表像1,2,3,4,5codeId

  2. 創建一個新的行插入優惠券表和連接用戶通過在優惠券表userId中添加另一個字段並將其添加到已添加優惠券的用戶的userId中來添加優惠券。

那麼哪兩個選項更好?

+0

因此,多個用戶可以共享相同的優惠券代碼,並且每個用戶可以有多個代碼? (多對多的關係) –

+0

是的,這也是網站上的一個選項。 – thegrede

回答

2

兩個表之間的許多一對多的關係,應該通過增加第三個表連接來解決兩個:

user_coupons 
- userId 
- couponId 
+0

謝謝Emil,這將是最好的解決方案。 – thegrede

1

您的第一個選擇違反了1-NF規則,它說沒有列會有一組值。

這是一個典型的一對多關係。第二個選項是創建一個單獨的表User_Coupons(不是下劃線),併爲每個關聯創建一個包含UserID CouponCode的行。這兩列應該是唯一的,以便它們都成爲關聯表的主鍵。

+0

一對多對於這個國際海事組織來說是一個不好的模式,優惠券代碼應該可能有與他們相關的信息。如他們正在打折的產品/網站,到期日期等。這也可以避免重複的記錄。用戶只會關聯到現有記錄。 多對多是要走的路。 – aowie1

0

如果我是你,我的數據庫是:

userId | firstName | lastName 

codeNumber | userId 

你如果你願意,可以爲任何用戶插入許多codeNumber。

相關問題