博客列表 >商城系统数据库商品表设计思路--20180613-23:05发布(0611作业)

商城系统数据库商品表设计思路--20180613-23:05发布(0611作业)

lilove的博客
lilove的博客原创
2018年07月08日 09:38:391849浏览

主题:

商城系统数据库中的商品表设计思路分析。

一、商品表建立

  • 商品基本信息主表:

CREATE TABLE `product` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `cid` int(10) NOT NULL COMMENT '分类',
  `title` varchar(100) NOT NULL COMMENT '商品名称',
  `pro_no` varchar(20) NOT NULL COMMENT '商品编码',
  `keywords` varchar(255) NOT NULL COMMENT '关键字',
  `desc` varchar(255) NOT NULL COMMENT '描述',
  `img` varchar(255) NOT NULL COMMENT '商品主图',
  `price` decimal(10,2) NOT NULL COMMENT '商品最低价格(SKU价格最低的产品)',
  `cost` decimal(10,2) NOT NULL COMMENT '成本(SKU价格最低的产品)',
  `pv` int(10) NOT NULL DEFAULT '0' COMMENT '点击量',
  `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态:-1已删除,0下架,1正常',
  `add_time` int(10) NOT NULL COMMENT '添加时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;

分析:

将内容较多的字段分到另外的表中以提高单表查询的效率;

主表只记录商品的主要图片;

表中的keywords字段是为了便于搜索引擎搜索;

建立索引id字段,用于服务器程序关联商品其它表的相关信息;

使用status字段表示商品状态,实现软删除及停止销售信息;

主表记录分类信息,低一级的信息在其它表中记录,减少表的体积,提高查询效率。


  • 商品分类表(首页展示):

CREATE TABLE `product_cates` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `pid` int(10) NOT NULL COMMENT '上级分类id',
  `ord` int(3) NOT NULL DEFAULT '0' COMMENT '排序',
  `title` varchar(50) NOT NULL COMMENT '标签标题',
  `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态:0正常,1禁用',
  `add_time` int(10) NOT NULL COMMENT '添加时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COMMENT='商品类目表';

分析:

分类信息表主要处理前台首页展示的分类栏目信息,关联主表中的商品上级分类pid,并提取到首页栏目显示。


  • 商品图片表:

CREATE TABLE `product_img` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `product_id` int(10) NOT NULL COMMENT '商品id',
  `img` varchar(255) NOT NULL COMMENT '商品图片url',
  `add_time` int(10) NOT NULL COMMENT '添加时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;

分析:

图片资源相对较多较灵活,单独建立一张表并关联相应的商品主表id,在后台应用程序中处理关联。


  • 商品销售信息表:

CREATE TABLE `product_sku` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `product_id` int(10) NOT NULL COMMENT '商品id',
  `properties` text NOT NULL COMMENT '属性键值对:property_name:property_value',
  `price` decimal(10,2) NOT NULL COMMENT '价格',
  `cost` decimal(10,2) NOT NULL COMMENT '成本',
  `stock` int(10) NOT NULL COMMENT '库存',
  `weight` int(10) NOT NULL COMMENT '重量:克',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=47 DEFAULT CHARSET=utf8;

分析:

使用商品id关联主表商品信息,主要保存商品实时信息,相对不固定。

属性键值对在后台程序业务逻辑中绑定商品的外观、尺寸、颜色等相关信息,这样就不用建立多个字段保存相关信息可以提高数据库效率。

主表中的价格和成本数据取自该表价格和成本字段。


细节:

  1. 将表与页面的模块一一对应,条理清晰;

  2. 批量操作数据库时,在程序上可使用事务避免因网络原因造成数据库查询执行不完整(mysql数据库myIsam引擎不支持事务,需要换成InnoDb引擎);

  3. url中提交的商品id使用随机编号避免用户循环查询造成数据库压力;

  4. 使用数字代表商品状态,在后台程序转化为实际状态字符串;

  5. 商品软删除;

  6. 尽量减少表字段提高效率(此细节做法相对灵活,需要多积累方法和思路)。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议