简单的商城系统的数据库设计
本文会详细介绍一下,简单商城系统的数据库的表的创建。
本文使用的数据库是MySQL8.0.x。
数据库可视化软件使用的是jetbrains datgrip。
概述
下面这两行
sql
的意义:
当新增一行数据时,那么那行中的create_at
和update_at
会自动填充时间,且是新增这行数据的时间。
当修改这行数据时,那么update_at
中保存的时间也会实现相应的修改,且是自动修改。
create_at datetime default current_timestamp comment '创建时间',
update_at datetime default current_timestamp on update current_timestamp comment '修改时间'
用户相关
账号表
create table account(
id int8 auto_increment primary key comment '主键',
username varchar(10) not null unique comment '账号',
`password` varchar(150) not null comment '密码',
nickname varchar(10) default null comment '昵称',
role_type varchar(1) default '0' comment '0 - 普通用户 1 - 管理员 2 - 超级管理员',
create_at datetime default current_timestamp comment '创建时间',
update_at datetime default current_timestamp on update current_timestamp comment '修改时间'
)comment '账号表';
用户信息表
create table userinfo(
id int8 auto_increment primary key comment '主键',
uid int8 not null comment '账号主键',
id_num varchar(18) comment '身份证号',
real_name varchar(10) comment '身份证姓名',
create_at datetime default current_timestamp comment '创建时间',
update_at datetime default current_timestamp on update current_timestamp comment '修改时间'
)comment '用户信息表';
购物车表
create table cart(
id int8 auto_increment primary key comment '主键',
uid int8 not null comment '账号主键',
`count` int comment '购物车中有几种类型的商品',
create_at datetime default current_timestamp comment '创建时间',
update_at datetime default current_timestamp on update current_timestamp comment '修改时间'
)comment '购物车表';
收件地址表
create table address(
id int8 auto_increment primary key comment '主键',
uid int8 not null comment '账号主键',
country varchar(30) default '中国' comment '国家',
province varchar(30) default '北京市' comment '省份/州',
city varchar(30) default '北京市' comment '市',
district varchar(30) default '东城区' comment '区/县',
detail varchar(150) not null comment '详细地址',
is_default varchar(1) default '0' comment '0 - 非默认收件地址 1 - 默认收件地址',
create_at datetime default current_timestamp comment '创建时间',
update_at datetime default current_timestamp on update current_timestamp comment '修改时间'
)comment '收件地址表';
商品相关
商品这块,简单设计一下,比较复杂的结构,感觉不是很容易实现。
比如:每个商品,用户可以自定义商品的颜色,尺码,款式等信息。
这里就不实现这种情况,商品的图片的话,也是采用比较简单的实现方式。
图片的存储是存储图片的地址(能直接通过url
访问到的那种)。
mySQL
对表中的列的长度以及行的长度都要限制,不知道如果直接存二进制数据会不会达到表的限制,所以直接存地址。
商品表
create table goods(
id int8 auto_increment primary key comment '主键',
category_id int8 not null comment '分类id',
`name` varchar(30) not null comment '商品名',
info varchar(300) comment '描述',
old_price decimal(10,2) default 0.01 comment '原价',
price decimal(10,2) default 0.01 comment '现价',
show_img varchar(500) comment '展示轮播图',
desc_img varchar(1500) comment '详情图',
color varchar(100) comment '商品颜色',
type varchar(100) comment '商品款式',
stock varchar(10) comment '商品库存',
create_at datetime default current_timestamp comment '创建时间',
update_at datetime default current_timestamp on update current_timestamp comment '修改时间'
)comment '商品表';
分类表
create table category(
id int8 auto_increment primary key comment '主键',
parent_id int8 not null comment '父id',
`name` varchar(30) not null comment '商品名',
create_at datetime default current_timestamp comment '创建时间',
update_at datetime default current_timestamp on update current_timestamp comment '修改时间'
)comment '分类表';
后面还会更新
后续还会优化