商城开发(2)-数据库设计1

686 阅读6分钟

商品属性:

商品编号--系统根据生成规则自动生成,不允许修改

商品名称--用户输入(商品1,商品2)

商品来源--从商品渠道表中获取

商品类型--从商品类型表中获取

商品规格--从商品规格表中获取

  • 规格1-(规格名称,建议售价,供货价等)
  • 规格2-(规格名称,建议售价,供货价等)
  • 规格n

商品单位--用户输入(箱,包等)

商品轮播图片--用户上传商品图,在商品购买的时候回轮播显示该图片列表

商品详情--富文本编辑器供用户编辑该商品的具体信息

商品渠道:

渠道名称--用户输入(淘宝,厂家发货等)

  • 渠道分类1--淘宝**商家
  • 渠道分类2
  • 渠道分类n

邮费模板--从邮费模板表中获取

邮费模板:

模板名称--用户输入

邮费规则--添加到邮费规则表中

邮费规则:

选择省市:默认全国

  • 省市1:从中国城市表中获取,添加到规则城市表中(处理某些城市不包邮或者其他规则问题)
  • 省市2:
  • 省市n:

邮费方式:默认1(0:按件计费,1:固定金额)

邮费单价:默认0

是否配送:默认1(0:否,1:是)

是否满额包邮:默认0(0:否,1:是)

包邮金额:默认0

中国城市表:

支撑系统的基本数据

创建数据库及表

  1. 创建数据库“db_share-sale”,基字符集选择utf8,数据库排序规则utf8_general_ci,创建表的时候字符集也是utf8和utf8_general_ci
  2. 创建邮费规则城市表“t_lgc_postage_rule_city”(lgc-logistics物流的意思)
  3. 创建邮费规则表“t_lgc_postage_rule”
  4. 创建邮费模板表“t_lgc_postage_template”
  5. 创建后台用户表“t_bas_user”,非会员表,用来保存后台登录用户的数据
  6. 创建"t_bas_menu",菜单表

    CREATE DATABASE /*!32312 IF NOT EXISTS*/`db_share-sale` /*!40100 DEFAULT CHARACTER SET utf8 */;
    
    USE `db_share-sale`;
    
    
    /* 创建用户表`t_bas_user`,存在的话先删除 */
    
    DROP TABLE IF EXISTS `t_bas_user`;
    
    CREATE TABLE `t_bas_user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户id',
      `account` varchar(128) NOT NULL COMMENT '账户',
      `password` varchar(128) NOT NULL COMMENT '密码',
      `name` varchar(128) NOT NULL COMMENT '账户角色名称(如:管理员)',
      `phone` varchar(20) NOT NULL COMMENT '手机号码',
      `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '账号状态,默认1(0:禁用,1:启用)',
      `meta_created` datetime NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
      `meta_modified` datetime NOT NULL DEFAULT current_timestamp() COMMENT '最后一次修改时间',
      `meta_logic_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识,默认0(0:否,1:是)',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    /* 创建菜单表`t_bas_menu`,存在的话先删除 */
    DROP TABLE IF EXISTS `t_bas_menu`;
    
    CREATE TABLE `t_bas_menu` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '菜单id',
      `parentId` bigint(20) NOT NULL DEFAULT 0 COMMENT '父级菜单ID,默认0 (0:没有父级ID)',
      `name` varchar(256) NOT NULL COMMENT '菜单名称',
      `chunkName` varchar(256) DEFAULT NULL COMMENT '菜单对应webpack生成的chunkname,值与项目中的路由一一对应,第一级并且有二级菜单为NULL',
      `moduleId` varchar(256) DEFAULT NULL COMMENT '该菜单对应页面的项目路径地址,第一级并且有二级菜单为NUL',
      `path` varchar(128) NOT NULL COMMENT '该菜单对应的项目路径(含父路径)的ID值,以|隔开',
      `url` varchar(128) DEFAULT NULL COMMENT '该菜单对应的href值',
      `icon` varchar(256) DEFAULT NULL COMMENT '菜单对应的图标',
      `level` bigint(20) NOT NULL DEFAULT 1 COMMENT '当前层级,默认1 (1:第一层级)',
      `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '菜单状态,默认1(0:禁用,1:启用)',
      `ext1` varchar(256) DEFAULT NULL COMMENT '扩展字段1',
      `ext2` varchar(256) DEFAULT NULL COMMENT '扩展字段2',
      `ext3` varchar(256) DEFAULT NULL COMMENT '扩展字段3',
      `ext4` varchar(256) DEFAULT NULL COMMENT '扩展字段4',
      `meta_created` datetime NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
      `meta_modified` datetime NOT NULL DEFAULT current_timestamp() COMMENT '最后一次修改时间',
      `meta_logic_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识,默认0(0:否,1:是)',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    /* 创建物流邮费规则表`t_lgc_postage_rule`,存在的话先删除 */
    DROP TABLE IF EXISTS `t_lgc_postage_rule`;
    
    CREATE TABLE `t_lgc_postage_rule` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '邮费规则id',
      `postage_template_id` bigint(20) NOT NULL COMMENT '邮费模板id',
      `type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '邮费方式,默认1(0:按件计费,1:固定金额)',
      `support_delivery` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否配送,默认1(0:否,1:是)',
      `logistics_cost` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '邮费单价,默认0.00',
      `logistics_free` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否满额包邮,默认0(0:否,1:是)',
      `logistics_free_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '包邮金额,默认0.00',
      `meta_created` datetime NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
      `meta_modified` datetime NOT NULL DEFAULT current_timestamp() COMMENT '最后一次修改时间',
      `meta_logic_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识,默认0(0:否,1:是)',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    /* 创建物流邮费规则城市表`t_lgc_postage_rule`,存在的话先删除 */
    DROP TABLE IF EXISTS `t_lgc_postage_rule_city`;
    
    CREATE TABLE `t_lgc_postage_rule_city` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '邮费规则城市id',
      `postage_rule_id` bigint(20) NOT NULL COMMENT '邮费规则id',
      `area_code` varchar(128) NOT NULL COMMENT '城市编码',
      `meta_created` datetime NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
      `meta_modified` datetime NOT NULL DEFAULT current_timestamp() COMMENT '最后一次修改时间',
      `meta_logic_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识,默认0(0:否,1:是)',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    /* 创建物流邮费模板表`t_lgc_postage_template`,存在的话先删除 */
    DROP TABLE IF EXISTS `t_lgc_postage_template`;
    
    CREATE TABLE `t_lgc_postage_template` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '邮费模板id',
      `name` varchar(256) NOT NULL COMMENT '邮费模板名称',
      `meta_created` datetime NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
      `meta_modified` datetime NOT NULL DEFAULT current_timestamp() COMMENT '最后一次修改时间',
      `meta_logic_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识,默认0(0:否,1:是)',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  7. 在“db_share-sale”中创建中国城市表“t_bas_china_city”(bas-base基础数据的意思)。通过执行sql语句生成,sql代码如下:

    DROP TABLE IF EXISTS `t_bas_china_city`;  
    CREATE TABLE `t_bas_china_city` (  
      `id` bigint(20) NOT NULL,  
      `name` varchar(40) default NULL,  
      `parent_id` bigint(20) default NULL,  
      PRIMARY KEY  (`id`),  
      KEY `FK_T_BAS_CHINA_CITY_REFERENCE_T_BAS_CHINA_CITY` (`parent_id`),  
      CONSTRAINT `FK_T_BAS_CHINA_CITY_REFERENCE_T_BAS_CHINA_CITY` FOREIGN KEY (`parent_id`) REFERENCES `t_bas_china_city` (`id`)  
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
      
    -- ----------------------------  
    -- Records of t_bas_china_city  
    -- ----------------------------  
    INSERT INTO `t_bas_china_city` VALUES ('0', '中国', '0');  
    INSERT INTO `t_bas_china_city` VALUES ('110000', '北京市', '0');  
    INSERT INTO `t_bas_china_city` VALUES ('110100', '东城区', '110000');  
    INSERT INTO `t_bas_china_city` VALUES ('110200', '西城区', '110000');  
    INSERT INTO `t_bas_china_city` VALUES ('110500', '朝阳区', '110000');  
    ...
    ...
    ...
    INSERT INTO `t_bas_china_city` VALUES ('659000', '省直辖行政单位', '650000');  
    INSERT INTO `t_bas_china_city` VALUES ('659001', '石河子市', '659000');  
    INSERT INTO `t_bas_china_city` VALUES ('659002', '阿拉尔市', '659000');  
    INSERT INTO `t_bas_china_city` VALUES ('659003', '图木舒克市', '659000');  
    INSERT INTO `t_bas_china_city` VALUES ('659004', '五家渠市', '659000');  
    INSERT INTO `t_bas_china_city` VALUES ('990000', '新疆建设兵团', '0');  
    INSERT INTO `t_bas_china_city` VALUES ('990100', '第一师', '990000');  
    ...
    INSERT INTO `t_bas_china_city` VALUES ('991400', '第十四师', '990000');  
  8. 初始化数据

    /* 插入用户数据 */
    insert into t_bas_user(account,password,name,phone) 
    values 
    ("admin","e10adc3949ba59abbe56e057f20f883e","超级管理员","15002071083");
    /* 插入菜单数据 */
    insert into t_bas_menu
    (parentId,name,chunkName,moduleId,path,url,icon,level) 
    VALUES
    (0,"系统设置",NULL,NULL,"1",NULL,"setting",1),
    (1,"账号管理","root-SysAccountList","./src/areas/root/Sys/Account/List.js","1|2","/sys/account",NULL,2),
    (1,"菜单管理","root-SysMenuList","./src/areas/root/Sys/Menu/List.js","1|3","/sys/menu",NULL,2);