第一次做網站,關於網站構造方面想請教下
本帖最後由 xlrtx 於 2013-03-11 20:23:40 編輯
長短不一的字串(可能為空白字串)儲存到資料庫裡面還是儲存成文字檔?
我做的是一個線上購物的網站,每個使用者都會有個購物車
購物車(cart)裡面儲存了他們放進去的物品和物品的配置,
這個購物車(cart)儲存的資料結構就是一個array(我儲存成了json格式)
但是由於有的使用者有放東西有的沒有放,所以每個使用者的購物車資料長度都不一樣
請問購物車的內容(Json資料)我要儲存到資料庫裡還是保持成檔案?
如果儲存成資料庫, 我是放在user.cart裡面 還是放到cart.items裡面?
1)如果放到cart.items裡,系統會等到使用者添加物品到Cart裡面後,再添加資料到cart,並且把使用者的user.cart_id賦值為cart.id
當使用者吧cart.item清空,則user.cart_id=0,並且刪除對應的cartrow
2)如果儲存到user.cart裡面,每個user都會分配個很長的cart用來做儲存,不知道會不會浪費資源?(我不清楚資料庫的儲存格式..)
3)如果儲存成檔案,我會在每個使用者註冊成功後產生一個$userid.json,放到一個私人檔案夾裡面,只有伺服器可以訪問,裡面的內容可能是空.
資料庫 json
------解決方案--------------------
一般網站的購物車,是通過儲存session或者cookie的。
因為這樣效能稍微好一點。
------解決方案--------------------
1、將 session 從預設的檔案方式改換成資料庫方式
2、直接操縱 $_SESSION,無需 json
3、為滿足“註冊的使用者需要能夠訪問上次登入時的購物車”可在 session 表中增加一個使用者名稱(使用者id)欄位,並適當調整 session 回呼函數
於是:
如果考慮用資料庫儲存未結賬資訊,則 session 表已經做了。不必再做
如果考慮用檔案儲存未結賬資訊,則因為訪問量巨大,多層目錄檔案管理困難;單層太慢。非萬不得已,不與採納
------解決方案--------------------
不要為了程式而寫程式,那是為了提高自身水平才做的事
做實際工作時,沒有搞清商務程序就考慮技術流程是錯誤的
我只說說你想法中的幾點錯誤
1.沒搞清為什麼要保留購物車資料,只是為了保留而保留
其實大部分人已經接受了重新登入/掉線購物車清空的事實,因為這點而投訴的客戶幾乎沒有
2.“如果有人獲得了使用者的帳號密碼……”,帳號密碼遠比購物車資料重要得多,本末倒置了
如果我丟失了賬戶密碼,我不擔心別人看到購物車裡面放的是避孕套還是筆墨紙硯,而是擔心別人看到我的寄送地址和收貨人資料
3.問題必須都在程式解決
應該在商務邏輯解決的事情,卻由技術邏輯扛下來,是絕對的不會做生意(做事)的表現
購物車資料屬於臨時資料,完成一次購物(重新選擇也算完成),資料就沒用了――或者說轉換為訂單資料
現在最大的區別只是時間,就是這個“完成過程”所耗費的時間和多次瀏覽的問題,順便問一下,購物車裡面的資料放幾個月還有用嗎?
有些時候在技術有限的情況不應把問題想得複雜化,能做才做,不能做就如實反饋給商務邏輯層解決
非要轉牛角尖的話,我再給你出一個商務邏輯方面的難題:
我和家長控制(可能不少於3人)共用一個購物帳號密碼,同時在多重網路節點,購物並發貨到不同地點或相同地點(訂單不同),技術層面怎麼解決?說明:拒絕二次登入屬於業務層面邏輯而不是技術層面邏輯,我的意思是允許多重網路節點怎麼做?
還是花點時間做好需求分析吧,和業務部門溝通最重要
------解決方案--------------------
好多大牛。
我也要做類似的網站。
mark了以後看。
還在學習《PHP和MySQL Web開發》這本書,看了一半了。