mysql颠覆实战笔记(四)--商品系统设计(一):商品主表设计

版权声明:笔记整理者亡命小卒热爱自由,崇尚分享。但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的《web级mysql颠覆实战课程 》。如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址。

  这几节课沈老师先带我们说道一下商品表。

  固定商品:譬如我们只是卖鞋,那么整个商品的属性基本都是一致的,列如鞋的颜色、尺寸、款式、品牌、价格。这时候我们涉及到的表往往是平面的。

  这种涉及方法的特点:

  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;

 

  

下节课再见!

上一节:mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法

 

下一课:mysql颠覆实战笔记(五)--商品系统设计(二):定时更新商品总点击量

 

posted @ 2016-08-03 23:35  前进的卒子  阅读(2536)  评论(0编辑  收藏  举报