MySQL
表设计
1 .1分析
-
一对一
用户与购物车 -
一对多
类型与商品 从商品看,一对一,一个 商品一个类型。从类型方看,一个类型下有很多商品。
购物车与购物项 一个购物车有很多购物项
购物项与商品 一个商品对应一个购物项 -
多对多
学生与老师
1.2 创建表
CREATE TABLE `product` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '商品id',
`prod_name` varchar(255) DEFAULT NULL,
`prod_price` decimal(10,2) DEFAULT NULL,
`prod_image` varchar(255) DEFAULT NULL,
`prod_store` bigint DEFAULT NULL,
`prod_status` int DEFAULT NULL COMMENT '商品状态 0 下架 1 在售 2 删除',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `sys_user` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`true_name` varchar(255) DEFAULT NULL,
`nick_name` varchar(30) DEFAULT NULL,
`age` tinyint unsigned DEFAULT NULL,
`gender` tinyint(1) DEFAULT NULL,
`phone` varchar(200) DEFAULT NULL,
`user_image` varchar(255) DEFAULT NULL,
`balance` decimal(30,4) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `cart` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '购物车id',
`total_money` decimal(30,2) DEFAULT NULL COMMENT '总金额',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1003 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `cart_item` (
`id` int NOT NULL AUTO_INCREMENT,
`buy_num` int DEFAULT NULL COMMENT '购买数量',
`money` decimal(10,2) DEFAULT NULL COMMENT '小计',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `type` (
`id` int NOT NULL AUTO_INCREMENT,
`type_name` varchar(255) DEFAULT NULL COMMENT '类型名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
表关系
以上是我们创建的单表,没有考虑他们之间的关系。必然是存在很大的问题的。
需要良好的设计以上一些表,维护他们之间的关系。
需要使用外键列(新的列)维护。
1. 一对一
CREATE TABLE cart(
id int auto_increment,
total_money DECIMAL(20,3) COMMENT '总金额',
uid BIGINT(10) COMMENT '外键列,数据严格参照用户表的id数据',
PRIMARY KEY(id)
);
2. 一对多
购物车与购物项
购物项与商品
商品与类型
类型与类型
3. 多对多
学生与老师