2011-06-03 162 views
1

我在本地服務器上構建了一個購物車系統來練習。數據庫設計建議

現在,我正在使用會話將產品插入MySQL數據庫,但我正在爲每個會話創建一個表。我知道這不是一個理想的做事方式。

我的問題:

我應該定義一個號碼在會話表中的行,這樣就會被添加到購物車項目的最大值是多少?

所以,如果我重新設計表這將是

User INT NULL, 
product_1 INT NULL, 
product_2 INT NULL, 
... 
.... 

我知道,每個訂單的創建表,只會導致未來

回答

4

問題沒有,這樣的設計將是令人難以置信難以維護。相反,有一張桌子可以放置所有的購物車數據;是這樣的:

User Product Quantity 
2  5   1 
2  3   3 
2  7   1 
3  5   2 
3  6   2 

這裏的「用戶」列在用戶表的外鍵(或車表爲準),和「產品」列在產品表的外鍵。這樣,一次對購物車中獨特產品的數量沒有限制。

2

在將新項目添加到數據庫之前,檢查購物車中的物品數量可能會更好。如果購物車項目的數量等於最大值,則不要允許添加其他項目或將行添加到數據庫。我不認爲有可能在SQL表中設置最大行數,如果可能的話,這可能不是好的做法。

爲什麼不能有一個包含所有購物車項目(針對所有用戶)的單個表格,並且在會引用SQL購物車表格中的行的Session變量中存儲唯一的客戶ID。

事情是這樣的......

列:客戶ID | ProductID |數量

行1:1293993933 | 393939399 | 3
第2排:1293993933 | 339933992 | 4

商店客戶ID在會話變量($ _SESSION [「客戶ID」]如果你使用PHP)

每個產品添加到購物車的時間做一個SELECT COUNT SQL查詢。如果它等於最大允許購物車項目,則不允許用戶將插入內容運行到SQL命令。

希望這會有所幫助