你的位置:首页 > 数据库

[数据库]mysql颠覆实战笔记(四)


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

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

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

  这种涉及方法的特点:

  1、纯定制化。

  2、开发快,仅仅只要针对某些元素开发。

  3、但是扩展性差,一旦我们新增了其他类型商品,那么真个系统就要重新做。

  4、时间久了,这张表会无比大。影响系统性能。

  所以我们尽可能的要设计一个相对通用的商品表。以适应大部分的电商系统。

  今天我们先来设计一个商品主表(我们首先假设我们的是B2C)

  包含通用信息:

  (一)即时更新:id,商品名称,所属分类,入库时间,最后一次修改时间,商品简介。

  (二)延时更新/日志更新:总点击量,月点击量,总销售量,月销售量,总评价数,月评价数。

  

  下面我们在navicat里创建表 prod_main:

  
  
  点击量日志表:
  作为一个电商系统,我们出料知道商品的总点击量,还需要知道商品的周点击和月点击,然后这些数据是不能记录在商品主表中的。
  课程中我们简单点,设计到月点击就好。
  我们来创建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一下,得到结果:

  

下节课再见!

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