這幾節課沈老師先帶我們說道一下商品表。
固定商品:譬如我們只是賣鞋,那麼整個商品的屬性基本都是一致的,列如鞋的顏色、尺寸、款式、品牌、價格。這時候我們涉及到的表往往是平面的。
這種涉及方法的特點:
1、純定制化。
2、開發快,僅僅只要針對某些元素開發。
3、但是擴展性差,一旦我們新增了其他類型商品,那麼真個系統就要重新做。
4、時間久了,這張表會無比大。影響系統性能。
所以我們盡可能的要設計一個相對通用的商品表。以適應大部分的電商系統。
今天我們先來設計一個商品主表(我們首先假設我們的是B2C)
包含通用信息:
(一)即時更新:id,商品名稱,所屬分類,入庫時間,最後一次修改時間,商品簡介。
(二)延時更新/日志更新:總點擊量,月點擊量,總銷售量,月銷售量,總評價數,月評價數。
下面我們在navicat裡創建表 prod_main:
其中 prod_id 設置自動增長,設置為主鍵。
prod_adddate設置默認值為CURRENT_TIMESTAMP.
然後我們根據字段隨便給這個表填入一個數據。
qizho
我們再創建一個簡單的商品類別表 prod_class:
點擊量日志表:
作為一個電商系統,我們出料知道商品的總點擊量,還需要知道商品的周點擊和月點擊,然後這些數據是不能記錄在商品主表中的。
課程中我們簡單點,設計到月點擊就好。
我們來創建prod_clicklog表:
接下來,我們用存儲過程來模擬讀書商品頁面:
1、從商品主表根據ID讀取商品所有信息。
2、如果讀取到,則記錄點擊日志。
我們要注意的知識點:FOUND_ROWS() select時返回最近一條SQL的結果及條數。
ROW_COUNT(): update delete insert受影響的條數。
BEGIN SELECT * FROM prod_main WHERE prod_id = _prod_id LIMIT 1; SET @num=FOUND_ROWS(); IF @num=1 THEN #代表商品取出成功 INSERT INTO prod_clicklog(prod_id,user_ip,user_id) VALUES (_prod_id,_user_ip,_user_id); END IF; END 參數:IN _prod_id int,IN _user_ip varchar(15),IN _user_id int
老規矩,我們新建查詢,CALL一下,得到結果:
然後我們再:
SELECT * from prod_clicklog;
下節課再見!