小米商城商品数据库

最近有个前端同学想做个小米商城,想委托我搭下后端,我寻思着最近也不忙,就答应了,没想到遇到的难题颇多,光数据库就研究了一星期,勉勉强强弄了个能看的出来。

本来是想着去网上找一个商城数据库改一改的,但百度了发现很难找到完善的商城数据库,基本都是简单的用于学习的,想想也是,哪个公司把他们数据库结构到处传的。被逼无奈,只好自己做了。

首先,商品肯定有分类,先贴我的分类表

CREATE TABLE `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '类别id',
  `parent_id` int(11) NOT NULL COMMENT '父类别id 当id=0是说明是根节点',
  `name` varchar(50) DEFAULT NULL,
  `status` tinyint(1) DEFAULT '1' COMMENT '状态',
  `sort_order` int(4) DEFAULT NULL COMMENT '排序编号,同类展示顺序',
  `is_show` tinyint(1) DEFAULT '0' COMMENT '是否显示在首页,不包含根类',
  `showimage` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '首页显示图片',
  `introducePage` varchar(255) DEFAULT NULL COMMENT '点击跳转页面',
  PRIMARY KEY (`id`)
) 

用无限级分类(我是不太懂这个,数据库不太行,无限查询都写不出来),然后我加了个首页显示图片以及跳转页面的字段,用来显示首页分类那块数据

然后就是商品表

CREATE TABLE `produce` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category_id` int(11) DEFAULT NULL,
  `is_new` tinyint(1) DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `label` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标签 用于首页推荐分类,查询等',
  `name` varchar(100) NOT NULL,
  `subtitle` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '商品副标题',
  `main_image` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '产品主图相对地址',
  `sub_images` text COMMENT '图片地址,json',
  `homepage_images` varchar(200) DEFAULT NULL,
  `homepage_subtitle` varchar(200) DEFAULT NULL,
  `detail` text COMMENT '商品详情',
  `price` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '价格 两位小数',
  `stock` int(11) DEFAULT NULL COMMENT '库存数量',
  `status` int(6) DEFAULT '1' COMMENT '商品状态1-在售 2-下架 3-删除',
  `is_discount` tinyint(1) DEFAULT NULL COMMENT '促销',
  `discount_price` decimal(20,0) DEFAULT NULL COMMENT '促销价',
  `discount_describe` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '促销描述',
  `color` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '选择颜色',
  `edition` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '选择版本',
  `size` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '选择尺寸',
  `capacity` varchar(255) DEFAULT NULL COMMENT '容量 ',
  `packages` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '套餐',
  `style` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '款式',
  `introducePage` varchar(255) DEFAULT NULL COMMENT '介绍页面',
  `buyPage` varchar(255) DEFAULT NULL COMMENT '购买页面',
  PRIMARY KEY (`id`)
)

商品表除了一些常见的名字价格,我为了简化表结构添加了一些字段

  1. 我添加了label字段,用来进行模糊查询,小米首页下面的分类我看着很繁琐,而且其他地方也没看见用来,要是都添加到数据库里就是多对多了,需要一个中间表,所以我干脆添加label字段用于模糊查询,此外label还用于搜索。
  2. 我看了一些商品,发现商品购买时的可选项不多,就颜色、版本、尺寸、容量、套餐、款式这几项,并不像淘宝那么多,既然如此,就直接添加到商品表中,数据冗余也不管了
  3. 商品详情我就放了一个字段,我看了一些商品sku的文章,基本都说用模板加json格式保存产品参数,所以我又创建了一个模板表
    CREATE TABLE `mould` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `data` text,
      PRIMARY KEY (`id`)
    )

    顺便写了个页面添加参数,我用的springboot,所以是templates(那个太长了,一会贴最后吧)

  4.  

    添加了介绍页和购买页,我看好像点击商品能跳转到的就这两个页了

商品的表就这么三个,然后讲讲我实际数据的情况,本来使用了无限分类应该一层一层分下去的,不过我发现我查询写不出来,无奈只能放两层了,因为只放了两层,本来我打算将所有商品都归到分类中(比如小米9我就打算在分类表中添加一个字段),这样首页显示的时候写接口会简单一些(反正都是我做,能省点事就省点),现在我已经预料到写接口会很繁琐。

最后在扯两句

  1. 重要的事说三遍,数据不要复制粘贴!数据不要复制粘贴!数据不要复制粘贴!如果你想添完手疼,就无视一条(不堪回首啊)最好是写爬虫添数据(虽然我不会,咳咳),但学个简单的爬虫肯定比你复制粘贴快
  2. 这个表结构还很粗糙,虽然我得先用它来写接口,不过肯定还得改,要是有建议的小伙伴可以留言告诉我,也可以加我QQ1057168743

贴上添加参数的templates

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
  <head>
  	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	
	<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
	<script type="text/javascript">
		$(function(){
			//添加分组
			$(".addGroup").click(function(){
				var placeholder = prompt("请输入组名", "处理器");
				var div = $("<div class='param'></div>");
				var select = $("<select class='addBtn'></select>");
				select.append("<option>h3</option>").append("<option>h4</option>").append("<option>image</option>");
				div.append("<input type='text' placeholder='" + placeholder +"'>").append(select).append("<button class='delBtn'>删除</button>").append("<br>");
				$(this).parent().append(div);
			})
			
			$("body").on('change', '.addBtn', function() {
				var div = $("<div class='childParam'></div>");
				div.append("---| ").append("<input type='text' placeholder='" + $(this).val() +"'>").append("<button class='delBtn'>删除</button><br>");
				$(this).parent().append(div);
			})
			
			$("body").on('click', '.delBtn', function() {
				$(this).parent().remove();
			})
			
			//选择商品
			$(".selectProduce").click(function(){
				$.ajax({
					url : "selectAllProduce",
					success : function(data){
						$.each(data, function(key, value){
							$(".selectProduce").append("<option produceid='" + value.id + "'>" + value.name + "</option>")
						})
					}
				})
				$(this).children().remove();
			})
			
			//提交
			$(".submit").click(function(){
				var array = new Array();
				$(".param").each(function(){
					//子节点
					var paramArray = new Array(); 
					$(this).children(".childParam").each(function(){
						var childJson = {
							"group" : $(this).children("input").attr("placeholder"),
							"param" : $(this).children("input").attr("text")
						}
						paramArray.push(childJson)
					})
					var json = {
						"group" : $(this).children("input").attr("placeholder"),
						"param" : paramArray
					}
					array.push(json);
				})
				$.ajax({
					url : "updateProduceByPrimaryKeySelective",
					type : "POST",
					data : {
						id : $(".selectProduce option:selected").attr("produceid"),
						detail : JSON.stringify(array)
					},
					success : function(data){
						alert("添加成功")
					}
				})
			})
		})
	</script>
  </head>
  
  <body>
  	<div>
	  	商品:
	  	<select class="selectProduce"></select>
	  	<!-- <button class="selectProduce">选择商品</button> -->
  	</div>
  	<div>
	  	参数规格:
	  	<button class="addGroup">添加分组</button><br>
	    <tr th:each="params,paramsStat : ${params}">
	    	<div class="param">
		    	<input type="text" th:placeholder="${params.group}">
		    	<select class="addBtn">
					<option>h3</option>
					<option>h4</option>
					<option>image</option>
				</select>
				<button class="delBtn">删除</button>
				<br>
			</div>
	    </tr>
  	</div>
	<button class="submit">提交</button>
  </body>
</html>

 

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值