商品系统设计(一):商品主表设计

商品主表设计

做一个网站如果涉及到商品有这么几种
固定商品
比如我们只是卖鞋的,那么整个商品的属性基本都是一致的。鞋的颜色、尺寸、款式、品牌、价格等属性。
这时我们涉及到的表往往是“平面的”。

简单设计

商品主表(我们首先假设我们是B2C的)
包含通用信息
(一)即时更新
id、商品名称、所属分类、入库时间、最后一次修改时间、商品简介
(二)延时更新/日志更新
总点击量、月点击量、总销量、月销量,总评价数、月评价数

CREATE TABLE `prod_main` (
  `prod_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `prod_name` varchar(50) DEFAULT NULL,
  `prod_calssid` int(11) DEFAULT NULL COMMENT '商品分类',
  `prod_intr` text,
  `prod_adddate` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `prod_lasteddate` timestamp NULL DEFAULT NULL,
  `prod_click_all` int(11) DEFAULT '0',
  `prod_click_month` int(11) DEFAULT '0',
  `prod_sale_all` int(11) DEFAULT '0',
  `prod_sale_month` int(11) DEFAULT '0',
  `prod_rate_all` int(11) DEFAULT '0',
  `prod_rate_month` int(11) DEFAULT '0',
  PRIMARY KEY (`prod_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8mb4;

INSERT INTO `prod_main` VALUES ('1', 'Python基础教程(第2版 修订版)', '1', '\nPython基础教程(第2版 修订版)Python基础教程(第2版 修订版)Python基础教程(第2版 修订版)Python基础教程(第2版 修订版)Python基础教程(第2版 修订版)Python基础教程(第2版 修订版)Python基础教程(第2版 修订版)Python基础教程(第2版 修订版)Python基础教程(第2版 修订版)\n企业批量购书\n分享 关注商品举报\nPython基础教程(第2版 修订版)\nPython入门佳作 经典教程的全新修订 10个项目引人入胜', '2017-01-03 17:09:29', '2017-01-03 17:09:22', null, null, null, null, '0', '0');

商品分类表:

CREATE TABLE `prod_class` (
  `prod_classid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `prod_classname` varchar(50) DEFAULT NULL,
  `prod_pclassid` int(11) DEFAULT '0',
  PRIMARY KEY (`prod_classid`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

INSERT INTO `prod_class` VALUES ('1', '图书', '0');

点击量日志表

作为一个电商系统,我们除了指定商品的总点击量。还需要指定商品的周点击量和月点击量。然而这些数据是不能记录在商品主表中的。
同时还需要有个日志表。

CREATE TABLE `prod_clicklog` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `prod_id` int(11) DEFAULT NULL,
  `user_ip` varchar(15) DEFAULT NULL,
  `user_id` int(11) DEFAULT '0',
  `clickdate` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

接下来我们来模拟读取商品页面

1、从商品主表根据ID读取商品所有信息
2、如果读取到,则记录点击量日志
知识点:
FOUND_ROWS(),select时返回最近一条sql的结果集条数;
ROW_COUNT(),update/delete/insert 受影响的条数

新建存储过程sp_load_prod

BEGIN
  SET @num=0;
  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

这里写图片描述
我们来执行这个存储过程:
这里写图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值