rebbit

MYSQL设计规范

本文最后更新于 2023年5月5日,已超过 1 年没有更新,如果文章内容失效,请反馈给我们,谢谢!

官网文档

https://dev.mysql.com/doc/refman/8.0/en/

通用字段

  • id:主键
  • created_at:创建时间
  • updated_at:更新时间
  • deleted_at:删除时间

用户表

用户表

CREATE TABLE `user` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,

  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '用户名',
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '密码',
  `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '昵称',
  `avatar_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '头像',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '真实姓名',
  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '邮箱',
  `age` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '年龄',
  `birthday` date DEFAULT NULL COMMENT '生日',

  `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';

第三方身份验证表

CREATE TABLE `user_third_auth` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int unsigned NOT NULL DEFAULT '0' COMMENT '用户表id',
  `openid` varchar(255) DEFAULT '' COMMENT '第三方唯一标识',
  `type` varchar(255) DEFAULT '' COMMENT '第三方类型',
  `userinfo` json NULL COMMENT '用户信息',

  `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表-第三方身份验证';

登录日志表

CREATE TABLE `user_login` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT '' COMMENT '登录填写的用户名',
  `password` varchar(255) DEFAULT '' COMMENT '登录填写的密码',
  `ip` varchar(255) DEFAULT '' COMMENT '登录IP',
  `user_agent` varchar(255) DEFAULT '' COMMENT '登录UA',
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表-登录日志';

商城

商品表

CREATE TABLE `goods` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `category_id` int unsigned NOT NULL DEFAULT '0' COMMENT '分类id',
  `is_on_sale` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '销售:0下架 1上架',
  `is_new` tinyint(1) DEFAULT '0' COMMENT '上新:0默认 1新品',
  
  `cover_pic_url` varchar(255) NOT NULL DEFAULT '0' COMMENT '封面图',
  `banner_pic_url` varchar(255) NOT NULL COMMENT '横幅图',
  `name` varchar(120) NOT NULL DEFAULT '' COMMENT '名称',
  `brief` varchar(255) NOT NULL DEFAULT '' COMMENT '简介',
  `desc` text COMMENT '详情页-富文本',
  `num` mediumint unsigned NOT NULL DEFAULT '0' COMMENT '商品数量',
  `sell_volume` int unsigned NOT NULL DEFAULT '0' COMMENT '销售量',
  `retail_price` varchar(100) NOT NULL DEFAULT '0.00' COMMENT '零售价格',
  `min_retail_price` decimal(10,2) DEFAULT '0.00' COMMENT '最小零售价格',
  `cost_price` varchar(100) NOT NULL DEFAULT '0.00',
  `min_cost_price` decimal(10,2) DEFAULT '0.00',
  
  `sort_order` smallint unsigned NOT NULL DEFAULT '100' COMMENT '排序',

  `goods_unit` varchar(45) NOT NULL COMMENT '商品单位',

  `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`),
  KEY `cat_id` (`category_id`),
  KEY `sort_order` (`sort_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品表';

订单表

CREATE TABLE `order` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `order_sn` varchar(20) NOT NULL DEFAULT '',
  `user_id` int unsigned NOT NULL DEFAULT '0' COMMENT '用户id',
  `share_user_id` int unsigned DEFAULT '0' COMMENT '推荐人',
  `order_status` smallint unsigned NOT NULL DEFAULT '0' COMMENT '101:未付款、102:已取消、103已取消(系统)、201:已付款、202:订单取消,退款中、203:已退款、301:已发货、302:已收货、303:已收货(系统)、401:已完成、801:拼团中,未付款、802:拼团中,已付款',
  `pay_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '支付方式:1=(h5)微信 2=(小程序)微信,3=(app)微信,4=(h5)支付宝,5=(app)支付宝,6=余额支付,7=线下支付',
  `shipping_status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '0未发货,1已发货',
  `receive_method` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '收货方式:0快递 1自提',
  `print_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '打印状态:0未打印,1已打印',

  `consignee` varchar(60) NOT NULL DEFAULT '' COMMENT '收货人',
  `address` varchar(255) NOT NULL DEFAULT '' COMMENT '收货人地址',
  `address_detail` varchar(255)NOT NULL DEFAULT '' COMMENT '收货人地址细节',
  `mobile` varchar(60) NOT NULL DEFAULT '' COMMENT '收货人手机号',
  `remark` varchar(255) NOT NULL DEFAULT '' COMMENT 订单备注',
  `print_info` varchar(255) NOT NULL DEFAULT '' COMMENT '订单简介',

  `goods_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品总价',
  `freight_price` int unsigned NOT NULL DEFAULT '0' COMMENT '配送费用',
  `order_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '订单总价',
  `actual_price` decimal(10,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '实际需要支付的金额',

  `pay_sn` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '支付订单号',
  `pay_amount` decimal(10,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '支付金额',
  `pay_at` datetime NULL DEFAULT NULL COMMENT '支付时间',
  `pay_end_at` datetime NULL DEFAULT NULL COMMENT '最后支付时间',
  
  `shipping_time` datetime NULL DEFAULT NULL COMMENT '发货时间',
  `confirm_time` datetime NULL DEFAULT NULL COMMENT '确认时间',

  `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `order_sn` (`order_sn`),
  KEY `user_id` (`user_id`),
  KEY `order_status` (`order_status`),
  KEY `pay_sn` (`pay_sn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订单表';

订单商品表

CREATE TABLE `order_goods` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `order_id` int unsigned NOT NULL DEFAULT '0' COMMENT '订单id',
  `goods_id` int unsigned NOT NULL DEFAULT '0' COMMENT '商品id',
  `goods_name` varchar(120) NOT NULL DEFAULT '' COMMENT '商品名称',
  `goods_spec` varchar(120) NOT NULL DEFAULT '' COMMENT '商品规格',
  `product_id` int unsigned NOT NULL DEFAULT '0' COMMENT '产品id',
  `number` smallint unsigned NOT NULL DEFAULT '1' COMMENT '数量',
  `retail_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '价格',
  `list_pic_url` varchar(255) NOT NULL DEFAULT '' COMMENT '封面图',
  PRIMARY KEY (`id`),
  KEY `order_id` (`order_id`),
  KEY `goods_id` (`goods_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订单表-商品';

购物车表

CREATE TABLE `cart` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int unsigned NOT NULL DEFAULT '0',
  `goods_id` mediumint unsigned NOT NULL DEFAULT '0' COMMENT '商品id',
  `product_id` mediumint unsigned NOT NULL DEFAULT '0' COMMENT '规格id',
 
  `add_price` decimal(10,2) DEFAULT '0.00' COMMENT '加入购物车时的价格',
  `number` smallint unsigned NOT NULL DEFAULT '0' COMMENT '数量',
  `checked` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '0未选中 1选中',

  `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='购物车';
© 版权声明
分享是一种美德,转载请保留原链接
THE END

文章不错?点个赞呗
点赞 0 分享

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部