zoukankan      html  css  js  c++  java
  • TPshop的规格表设计原理机制

    TPshop商品规格比较简单, 数据库设计清晰, 先看上图购买商品时对应的选择, 不同规格有着不同的价格和不同的库存。

    再看看后台对应的设置,手机例子

    颜色:黑色 白色 金色

    内存:32G 64G  128G

    因为 黑色手机也有 32G 64G  128G , 然后白色手机也有32G 64G  128G  金色手机也有 32G 64G  128G  所以这里是有9种组合

    9种价格 9种库存 9种条码 当拿到其中一个条码时就知道这个商品(手机)是什么规格是什么颜色什么内存等。。。。

    下面来看看表结构设计

     

    如上图可以看出

    1. tp_goods_type 表的 id 4 表示手机,

    2. tp_spec 表 type_id 里面的 4表是手机 id 16表示颜色  6表示内存

    3. tp_spec_item表  spec_id 6表示内存 id 28表示 31G

    4. tp_spec_item表  spec_id 16表示颜色 id 55表示 黑色

    5. tp_spec_goods_price表的 key字段 28_55 表示32G 黑色 刚好对应 tp_spec_item表

    如上图清晰可以理解, 如果不理解多看几遍完全可以简单理解。

    以下是创建这四张表的sql 代码。 自己也可以在本地TPshop数据库查看一下

    tpshop.tp_goods_type 商品类型表
     
    CREATE TABLE `tp_goods_type` (
      `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id自增',
      `name` varchar(60) NOT NULL DEFAULT '' COMMENT '类型名称',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8
     
    tpshop.tp_spec 规格表
     
    CREATE TABLE `tp_spec` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '规格表',
      `type_id` int(11) DEFAULT '0' COMMENT '规格类型',
      `name` varchar(55) DEFAULT NULL COMMENT '规格名称',
      `order` int(11) DEFAULT '50' COMMENT '排序',
      `search_index` tinyint(1) DEFAULT '0' COMMENT '是否需要检索',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=utf8
     
     
    tpshop.tp_spec_item 规格项表
     
    CREATE TABLE `tp_spec_item` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '规格项id',
      `spec_id` int(11) DEFAULT NULL COMMENT '规格id',
      `item` varchar(54) DEFAULT NULL COMMENT '规格项',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=123 DEFAULT CHARSET=utf8
     
    tpshop.tp_spec_goods_price  规格对应 价格 库存 条码表
     
    CREATE TABLE `tp_spec_goods_price` (
      `goods_id` int(11) DEFAULT '0' COMMENT '商品id',
      `key` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '规格键名',
      `key_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '规格键名中文',
      `price` decimal(10,2) DEFAULT NULL COMMENT '价格',
      `store_count` int(11) unsigned DEFAULT '10' COMMENT '库存数量',
      `bar_code` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '商品条形码'
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8

    这4个表解决相同盘子的手机,因参数不同引发的不同的价格

  • 相关阅读:
    linux 常用命令
    git 常见命令
    合并两个有序链表---python
    Code Contract for .NET
    Kruskal最小生成树算法
    逻辑-哲学
    停机问题
    逆向工程
    .net framework
    python 类库
  • 原文地址:https://www.cnblogs.com/luhouxiang/p/7705318.html
Copyright © 2011-2022 走看看