《高性能MySQL》数据库表实践

数据库表实践

Init Database

CREATE DATABASE IF NOT EXISTS mc_customer DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

CREATE DATABASE IF NOT EXISTS mc_product DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

CREATE DATABASE IF NOT EXISTS mc_order DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Init User


CREATE TABLE IF NOT EXISTS `customer_login`(
 `customer_id` INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '用户ID',
 `login_name` VARCHAR(20) NOT NULL COMMENT '用户登录名',
 `password` CHAR(32) NOT NULL COMMENT 'md5加密的密码',
 -- 禁止使用枚举类型,而采用约定的整型
 `user_stats` TINYINT NOT NULL DEFAULT 1 COMMENT '用户状态,1 可用,0 冻结',
 -- modified_time 在更新数据时自动更新
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_customerid (`customer_id`)
) engine = innodb COMMENT='用户登录表';

INSERT INTO `customer_login` (`customer_id`, `login_name`, `password`, `user_stats`)
VALUES
(1, 'admin', 'D959CAADAC9B13DCB3E609440135CF54', 1),
(2, 'user', 'D959CAADAC9B13DCB3E609440135CF54', 1),
(3, 'root', 'D959CAADAC9B13DCB3E609440135CF54', 1),
(4, 'guest', 'D959CAADAC9B13DCB3E609440135CF54', 1);



CREATE TABLE IF NOT EXISTS `customer_inf`(
 `customer_inf_id` INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '用户信息ID',
 -- 关联外键,但是不使用外键约束,而在程序中维护表关系,避免在增删父表数据时还需要检查外键约束
 `customer_id` INT UNSIGNED NOT NULL COMMENT 'customer_login表的自增ID',
 `customer_name` VARCHAR(20) NOT NULL COMMENT '用户真实姓名',
 `identity_card_type` TINYINT NOT NULL DEFAULT 1 comment '证件类型:1 身份证,2 军官证,3 护照',
 `identity_card_no` VARCHAR(20) COMMENT '证件号码',
 `mobile_phone` CHAR(16) COMMENT '手机号',
 `customer_email` VARCHAR(50) COMMENT '邮箱',
 -- 使用最短长度设置属性的宽度
 `gender` CHAR(1) COMMENT '性别:0 女,1 男',
 `user_point` INT NOT NULL DEFAULT 0 COMMENT '用户积分',
 `register_time` TIMESTAMP NOT NULL COMMENT '注册时间',
 -- 使用日期类型,能够使用日期函数,且存储只需8字节
 `birthday` DATETIME COMMENT '会员生日',
 `customer_level` TINYINT NOT NULL DEFAULT 1 COMMENT '会员级别:1 普通会员,2 青铜会员,3 白银会员,4 黄金会员,5 钻石会员',
 -- 金额类数据,必须使用 decimal 类型,精确浮点型,计算时不会丢失精度
 `user_money` DECIMAL(8,2) NOT NULL DEFAULT 0.00 COMMENT '用户余额',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_customerinfid(`customer_inf_id`)
) engine = innodb COMMENT='用户信息表';

INSERT INTO `customer_inf` (
 `customer_inf_id`, 
 `customer_id`,
 `customer_name`,
 `identity_card_type`,
 `identity_card_no`,
 `mobile_phone`, 
 `customer_email`,
 `gender`,
 `user_point`,
 `register_time`,
 `birthday`,
 `customer_level`,
 `user_money`) VALUES 
(1, 1, '管理员', 1, null, '+86 13700001111', null, 1, 0, NOW(), NOW(), 3, 0.00),
(2, 2, '用户', 1, null, '+86 18800001111', null, 1, 0, NOW(), NOW(), 1, 0.00),
(3, 3, '超级管理员', 1, null, '+86 18822223333', null, 1, 0, NOW(), NOW(), 5, 0.00),
(4, 4, '测试', 1, null, '+86 18844445555', null, 1, 0, NOW(), NOW(), 2, 0.00);



CREATE TABLE IF NOT EXISTS `customer_level_inf`(
 `customer_level` TINYINT NOT NULL AUTO_INCREMENT COMMENT '会员级别ID',
 `level_name` VARCHAR(10) NOT NULL COMMENT '会员级别名称',
 -- 积分上下线,使用无符号标识,无符号数值的上限为2^32
 `min_point` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '该级别最低积分',
 `max_point` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '该级别最高积分',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_levelid(`customer_level`)
) engine = innodb COMMENT='用户级别信息表';

INSERT INTO `customer_level_inf` (
 `customer_level`,
 `level_name`, 
 `min_point`,
 `max_point`
) VALUES
(1, '普通会员', 0, 99),
(2, '青铜会员', 100, 199),
(3, '白银会员', 200, 499),
(4, '黄金会员', 500, 1000),
(5, '钻石会员', 1000, 10000);



CREATE TABLE IF NOT EXISTS `customer_addr`(
 `customer_addr_id` INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '自增主键ID',
 `customer_id` INT UNSIGNED NOT NULL COMMENT 'customer_login表的自增ID',
 `zip` SMALLINT NOT NULL COMMENT '邮编',
 `province` SMALLINT NOT NULL COMMENT '地区表中的省份ID',
 `city` SMALLINT NOT NULL COMMENT '地区表中的城市ID',
 `district` SMALLINT NOT NULL COMMENT '地区表中的区ID',
 `address` VARCHAR(200) NOT NULL COMMENT '具体的地址门牌号',
 `is_default` TINYINT NOT NULL COMMENT '是否默认:1 默认,0 不默认',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_customeraddrid(`customer_addr_id`)
) engine = innodb COMMENT='用户地址表';

INSERT INTO `customer_addr` (
 `customer_addr_id`,
 `customer_id`,
 `zip`,
 `province`,
 `city`,
 `district`,
 `address`,
 `is_default`
) VALUES 
(1, 2, 20000, 1, 1, 5, '湄浦路310弄B栋405室', 1),
(2, 2, 20000, 1, 1, 8, '大柏树凉城四村100栋301室', 0),
(3, 2, 20000, 1, 1, 3, '长逸路15号复旦软件园B栋1111室', 0);



CREATE TABLE IF NOT EXISTS `customer_point_log`(
 `point_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '积分日志ID',
 `customer_id` INT UNSIGNED NOT NULL COMMENT '用户ID',
 `source` TINYINT UNSIGNED NOT NULL COMMENT '积分来源:0 订单,1 登录,2 活动',
 `refer_number` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '积分来源相关编号',
 -- 变更积分可能为负值,因此为有符号数,有符号数的范围为 -2^31 ~ 2^31-1
 `change_point` SMALLINT NOT NULL DEFAULT 0 COMMENT '变更积分数',
 `create_time` TIMESTAMP NOT NULL COMMENT '积分日志生成时间',
 PRIMARY KEY pk_pointid(`point_id`)
) engine = innodb COMMENT='用户积分日志表';

CREATE TABLE IF NOT EXISTS `customer_balance_log`(
 `balance_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '余额日志ID',
 `customer_id` INT UNSIGNED NOT NULL COMMENT '用户ID',
 `source` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '记录来源:1 订单,2 退货单',
 `source_sn` INT UNSIGNED NOT NULL COMMENT '相关单据ID',
 `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录生成时间',
 `amount` DECIMAL(8,2) NOT NULL DEFAULT 0.00 COMMENT '变动金额',
 PRIMARY KEY pk_blanceid (`balance_id`)
) engine = innodb COMMENT '用户余额变动表';

CREATE TABLE IF NOT EXISTS `customer_login_log`(
 -- 分区表不建议创建主键,因为主键会创建一个唯一性全局索引,在 drop 分区表时会使索引失效,导致数据无法入库。
 -- login_id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '登录日志ID',
 `customer_id` INT UNSIGNED NOT NULL COMMENT '登录用户ID',
 -- 用户登录只有登录时间,因此不设置修改时间
 `login_time` TIMESTAMP NOT NULL COMMENT '用户登录时间',
 `login_ip` INT UNSIGNED NOT NULL COMMENT '登录IP',
 `login_type` TINYINT NOT NULL COMMENT '登录类型:0 未成功,1 成功'
 -- PRIMARY KEY pk_loginid (login_id)
) engine = innodb COMMENT '用户登录日志表'
-- 对用户登录日志表进行分区,规则为 login_time 以年为范围分区,这样方便对用户登录日志做归档及删除操作
PARTITION BY RANGE(UNIX_TIMESTAMP(`login_time`))(
    PARTITION p0 VALUES LESS THAN (UNIX_TIMESTAMP('2018-01-01 00:00:00')),
    PARTITION p1 VALUES LESS THAN (UNIX_TIMESTAMP('2019-01-01 00:00:00')),
    PARTITION p2 VALUES LESS THAN (UNIX_TIMESTAMP('2020-01-01 00:00:00'))
);

INSERT INTO `customer_login_log` (`customer_id`, `login_time`, `login_ip`, `login_type`) 
VALUES 
(1, '2015-01-02',INET_ATON('192.168.10.101'),1),
(1, '2018-01-02',INET_ATON('192.168.10.102'),0),
(1, '2019-01-02',INET_ATON('192.168.10.103'),1),
(1, '2017-01-02',INET_ATON('192.168.10.101'),0),
(1, '2019-01-02',INET_ATON('192.168.10.102'),1);

Init Product


CREATE TABLE `brand_info`(
 `brand_id` SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '品牌ID',
 `brand_name` VARCHAR(50) NOT NULL COMMENT '品牌名称',
 `telephone` VARCHAR(50) NOT NULL COMMENT '联系电话',
 `brand_web` VARCHAR(100) COMMENT '品牌网站',
 `brand_logo` VARCHAR(100) COMMENT '品牌LOGO',
 `brand_desc` VARCHAR(150) COMMENT '品牌描述',
 `brand_status` TINYINT NOT NULL DEFAULT 0 COMMENT '品牌状态:0 禁用,1 启用',
 `brand_order` TINYINT NOT NULL DEFAULT 0 COMMENT '排序',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_brandid(`brand_id`)
) ENGINE = INNODB COMMENT '品牌信息表';

CREATE TABLE `product_category`(
 `category_id` SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '分类ID',
 `category_name` VARCHAR(10) NOT NULL COMMENT '分类名称',
 `parent_id` SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '父分类ID',
 `category_level` TINYINT NOT NULL DEFAULT 1 COMMENT '分类层级',
 `category_status` TINYINT NOT NULL DEFAULT 1 COMMENT '分类状态',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_categoryid(`category_id`)
) ENGINE = INNODB COMMENT '商品分类表';

CREATE TABLE `supplier_info`(
 `supplier_id` INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '供应商ID',
 `supplier_code` CHAR(8) NOT NULL COMMENT '供应商编码',
 `supplier_name` CHAR(50) NOT NULL COMMENT '供应商名称',
 `supplier_type` TINYINT NOT NULL COMMENT '供应商类型:1 自营,2 平台',
 `link_man` VARCHAR(10) NOT NULL COMMENT '供应商联系人',
 `phone_number` VARCHAR(50) NOT NULL COMMENT '联系电话',
 `bank_name` VARCHAR(50) NOT NULL COMMENT '供应商开户银行名称',
 `bank_account` VARCHAR(50) NOT NULL COMMENT '银行账号',
 `address` VARCHAR(200) NOT NULL COMMENT '供应商地址',
 `supplier_status` TINYINT NOT NULL DEFAULT '0' COMMENT '状态:0 禁用,1 启用',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_supplierid(`supplier_id`)
) ENGINE = INNODB COMMENT '供应商信息表';

CREATE TABLE `product_info` (
 `product_id` INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '商品ID',
 `product_code` CHAR(16) NOT NULL COMMENT '商品编码',
 `product_name` VARCHAR(20) NOT NULL COMMENT '商品名称',
 `bar_code` VARCHAR(50) NOT NULL COMMENT '条形码',
 `brand_id` INT UNSIGNED NOT NULL COMMENT '品牌表的ID',
 `one_category_id` SMALLINT NOT NULL COMMENT '一级分类ID',
 `two_category_id` SMALLINT NOT NULL COMMENT '二级分类ID',
 `three_category_id` SMALLINT NOT NULL COMMENT '三级分类ID',
 `supplier_id` INT NOT NULL COMMENT '商品的供应商ID',
 `price` DECIMAL(8,2) NOT NULL COMMENT '商品销售价格',
 `average_cose` DECIMAL(18,2) NOT NULL COMMENT '商品加权平均成本',
 `publish_status` TINYINT NOT NULL DEFAULT 0 COMMENT '上下架状态:0 下架,1 上架',
 `audit_status` TINYINT NOT NULL DEFAULT 0 COMMENT '审核状态:0 未审核,1 已审核',
 `weight` FLOAT COMMENT '商品重量',
 `length` FLOAT COMMENT '商量长度',
 `height` FLOAT COMMENT '商品高度',
 `width` FLOAT COMMENT '商品宽度',
 `color_type` ENUM('红','黄','绿','紫','蓝','白','黑','粉'),
 `production_date` DATETIME NOT NULL COMMENT '生产日期',
 `shelf_life` INT NOT NULL COMMENT '商品有效期',
 `descript` TEXT NOT NULL COMMENT '商品描述',
 `indate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '商品录入时间',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_productid(`product_id`)
) ENGINE = INNODB COMMENT '商品信息表';

CREATE TABLE `product_pic_info` (
 `product_pic_id` INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '商品图片ID',
 `product_id` INT UNSIGNED NOT NULL COMMENT '商品ID',
 `pic_desc` VARCHAR(50) COMMENT '图片描述',
 `pic_url` VARCHAR(50) COMMENT '图片url',
 `is_master` TINYINT NOT NULL DEFAULT 0 COMMENT '是否主图:0 非主图,1 主图',
 `pic_order` TINYINT NOT NULL DEFAULT 0 COMMENT '图片排序',
 `pic_status` TINYINT NOT NULL DEFAULT 1 COMMENT '图片是否有效:0 无效,1 有效',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_picid(`product_pic_id`)
) ENGINE = INNODB COMMENT '商品图片信息表';

CREATE TABLE `product_comment` (
 `comment_id` INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '评论ID',
 `product_id` INT UNSIGNED NOT NULL COMMENT '商品ID',
 `order_id` BIGINT UNSIGNED NOT NULL COMMENT '订单ID',
 `customer_id` INT UNSIGNED NOT NULL COMMENT '用户ID',
 `title` VARCHAR(50) NOT NULL COMMENT '评论标题',
 `content` VARCHAR(300) NOT NULL COMMENT '评论内容',
 `audit_status` TINYINT NOT NULL COMMENT '审核状态:0 未审核,1 已审核',
 `audit_time` TIMESTAMP NOT NULL COMMENT '评论时间',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_commentid(`comment_id`)
) ENGINE = INNODB COMMENT '商品评论表';

Init Order


CREATE TABLE `order_master`(
 `order_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '订单ID',
 `order_sn` BIGINT UNSIGNED NOT NULL COMMENT '订单编号 yyyymmddnnnnnn',
 `customer_id` INT UNSIGNED NOT NULL COMMENT '下单人ID',
 `shipping_user` VARCHAR(10) NOT NULL COMMENT '收货人姓名',
 `province` SMALLINT NOT NULL COMMENT '省',
 `city` SMALLINT NOT NULL COMMENT '市',
 `district` SMALLINT NOT NULL COMMENT '区',
 `address` VARCHAR(200) NOT NULL COMMENT '地址',
 `payment_method` TINYINT NOT NULL COMMENT '支付方式:1 现金,2 余额,3 网银,4 支付宝,5 微信',
 `order_money` DECIMAL(8,2) NOT NULL COMMENT '订单金额',
 `district_monry` DECIMAL(8,2) NOT NULL DEFAULT 0.00 COMMENT '优惠金额',
 `shipping_money` DECIMAL(8,2) NOT NULL DEFAULT 0.00 COMMENT '运费金额',
 `payment_money` DECIMAL(8,2) NOT NULL DEFAULT 0.00 COMMENT '支付金额',
 `shipping_comp_name` VARCHAR(10) NOT NULL COMMENT '快递公司名称',
 `shipping_sn` VARCHAR(50) NOT NULL COMMENT '快递单号',
 `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下单时间',
 `shipping_time` DATETIME COMMENT '发货时间',
 `pay_time` DATETIME COMMENT '支付时间',
 `receive_time` DATETIME COMMENT '收货时间',
 `order_status` TINYINT NOT NULL DEFAULT 0 COMMENT '订单状态',
 `order_point` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '订单积分',
 `invoice_title` VARCHAR(100) NOT NULL COMMENT '发票抬头',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_orderid(`order_id`)
) ENGINE = INNODB COMMENT '订单主表';

CREATE TABLE `order_detail`(
 `order_detail_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '订单详情ID',
 `order_id` INT UNSIGNED NOT NULL COMMENT '订单表ID',
 `product_id` INT UNSIGNED NOT NULL COMMENT '订单商品ID',
 `product_name` VARCHAR(50) NOT NULL COMMENT '商品名称',
 `product_cnt` INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '购买商品数量',
 `product_price` DECIMAL(8,2) NOT NULL COMMENT '购买商品单价',
 `average_cost` DECIMAL(8,2) NOT NULL DEFAULT 0.00 COMMENT '平均成本价格',
 `weight` FLOAT COMMENT '商品重量',
 `fee_money` DECIMAL(8,2) NOT NULL DEFAULT 0.00 COMMENT '优惠分摊金额',
 `w_id` INT UNSIGNED NOT NULL COMMENT '仓库ID',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_orderdetailid(`order_detail_id`)
) ENGINE = INNODB COMMENT '订单详情表';

CREATE TABLE `order_cart`(
 `cart_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '购物车ID',
 `customer_id` INT UNSIGNED NOT NULL COMMENT '用户ID',
 `product_id` INT UNSIGNED NOT NULL COMMENT '商品ID',
 `product_amount` INT UNSIGNED NOT NULL COMMENT '加入购物车商品数量',
 `price` DECIMAL(8,2) NOT NULL COMMENT '商品价格',
 `add_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '加入购物车时间',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_cartid(`cart_id`)
) ENGINE = INNODB COMMENT '购物车表';

CREATE TABLE `warehouse_info`(
 `w_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '仓库ID',
 `warehouse_sn` CHAR(5) NOT NULL COMMENT '仓库编码',
 `warehouse_name` VARCHAR(10) NOT NULL COMMENT '仓库名称',
 `warehouse_phone` VARCHAR(20) NOT NULL COMMENT '仓库电话',
 `contact` VARCHAR(10) NOT NULL COMMENT '仓库联系人',
 `province` SMALLINT NOT NULL COMMENT '省',
 `city` SMALLINT NOT NULL COMMENT '市',
 `district` SMALLINT NOT NULL COMMENT '区',
 `address` VARCHAR(200) NOT NULL COMMENT '仓库地址',
 `warehouse_status` TINYINT NOT NULL DEFAULT 1 COMMENT '仓库状态:0 禁用,1 启用',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_wid(`w_id`)
) ENGINE = INNODB COMMENT '仓库信息表';

CREATE TABLE `warehouse_product`(
 `wp_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '商品库存ID',
 `product_id` INT UNSIGNED NOT NULL COMMENT '商品ID',
 `w_id` INT UNSIGNED NOT NULL COMMENT '仓库ID',
 `current_cnt` INT NOT NULL DEFAULT 0 COMMENT '当前商品数量',
 `lock_cnt` INT NOT NULL DEFAULT 0 COMMENT '当前占用数据',
 `in_transit_cnt` INT NOT NULL DEFAULT 0 COMMENT '在途数据',
 `average_cost` DECIMAL(8,2) NOT NULL DEFAULT 0.00 COMMENT '移动加权成本',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_wpid(`wp_id`)
) ENGINE = INNODB COMMENT '商品库存表';

CREATE TABLE `shipping_info`(
 `ship_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '物流公司ID',
 `ship_name` VARCHAR(20) NOT NULL COMMENT '物流公司名称',
 `ship_contact` VARCHAR(20) NOT NULL COMMENT '物流公司联系人',
 `telphone` VARCHAR(20) NOT NULL COMMENT '物流公司联系电话',
 `price` DECIMAL(8,2) NOT NULL DEFAULT 0.00 COMMENT '配送价格',
 `modified_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY pk_shipid(`ship_id`)
) ENGINE = INNODB COMMENT '物流公司信息表';

《高性能MySQL》目录

  1. 第一章 数据库设计规范
  2. 第二章 数据库字段设计规范
  3. 第三章 数据库 SQL 开发规范
  4. 第四章 数据库操作行为规范
  5. 第五章 设计数据库分区表
  6. 第六章 MySQL存储引擎
  7. 第七章 MySQL 执行优化
  8. 第八章 MySQL 慢查询日志
  9. 第九章 MySQL 数据库备份与恢复
  10. 第十章 MySQL构架拆分
  11. 其他:MySQL表结构实践sql
  12. 其他2:MySQL常用命令
文章作者: koral
文章链接: http://luokaiii.github.io/2019/06/23/读书笔记/《高性能MySQL》/20.数据库表结构实践/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自