我在本地服務器上構建了一個購物車系統來練習。數據庫設計建議
現在,我正在使用會話將產品插入MySQL數據庫,但我正在爲每個會話創建一個表。我知道這不是一個理想的做事方式。
我的問題:
我應該定義一個號碼在會話表中的行,這樣就會被添加到購物車項目的最大值是多少?
所以,如果我重新設計表這將是
User INT NULL,
product_1 INT NULL,
product_2 INT NULL,
...
....
我知道,每個訂單的創建表,只會導致未來
我在本地服務器上構建了一個購物車系統來練習。數據庫設計建議
現在,我正在使用會話將產品插入MySQL數據庫,但我正在爲每個會話創建一個表。我知道這不是一個理想的做事方式。
我的問題:
我應該定義一個號碼在會話表中的行,這樣就會被添加到購物車項目的最大值是多少?
所以,如果我重新設計表這將是
User INT NULL,
product_1 INT NULL,
product_2 INT NULL,
...
....
我知道,每個訂單的創建表,只會導致未來
問題沒有,這樣的設計將是令人難以置信難以維護。相反,有一張桌子可以放置所有的購物車數據;是這樣的:
User Product Quantity
2 5 1
2 3 3
2 7 1
3 5 2
3 6 2
這裏的「用戶」列在用戶表的外鍵(或車表爲準),和「產品」列在產品表的外鍵。這樣,一次對購物車中獨特產品的數量沒有限制。
在將新項目添加到數據庫之前,檢查購物車中的物品數量可能會更好。如果購物車項目的數量等於最大值,則不要允許添加其他項目或將行添加到數據庫。我不認爲有可能在SQL表中設置最大行數,如果可能的話,這可能不是好的做法。
爲什麼不能有一個包含所有購物車項目(針對所有用戶)的單個表格,並且在會引用SQL購物車表格中的行的Session變量中存儲唯一的客戶ID。
事情是這樣的......
列:客戶ID | ProductID |數量
行1:1293993933 | 393939399 | 3
第2排:1293993933 | 339933992 | 4
商店客戶ID在會話變量($ _SESSION [「客戶ID」]如果你使用PHP)
每個產品添加到購物車的時間做一個SELECT COUNT SQL查詢。如果它等於最大允許購物車項目,則不允許用戶將插入內容運行到SQL命令。
希望這會有所幫助